1、 - 1 - .NET 和 C#简介 为了理解 .NET 的重要性,考虑一下近 10 年来出现的许多 Windows 技术的本质会有一定的帮助。尽管所有的 Windows 操作系统在表面上看来完全不同,但从Windows 3.1( 1992 年)到 Windows Server 2003,在内核上都有相同的 Windows API。在我们转而使用 Windows 的新版本时, API 中增加了非常多的新功能,但这是一个演化和扩展 API 的过程,并非是替换它。 向后兼容性是 Windows 技术的极其重要的特性,也是 Windows 平台的一个长处,但它有一个很大的缺 点。每次某项技术进行演化
2、,增加了新功能后,都会比它以前更复杂。 很明显,对此必须进行改进。 Microsoft 不可能一直扩展这些开发工具和语言,使它们越来越复杂,既要保证能跟上最新硬件的发展步伐,又要与 20 世纪 90 年代初开始流行的 Windows 产品向后兼容。如果要得到一种简单而专业化的语言、环境和开发工具,让开发人员轻松地编写优秀的软件,就需要一种新的开端。 这就是 C#和 .NET 的作用。粗略地说, .NET 是一种在 Windows 上编程的新架构 一种新 API。 C#是一种新语言,它可以利用 .NET Framework 及其开发环境中的所有新特性,以及在最近 20 年来出现的面向对象的编程方
3、法。 在继续介绍前,必须先说明,向后兼容性并没有在这个演化进程中失去。现有的程序仍可以使用, .NET 也兼容现有的软件。软件组件在 Windows 上的通信,现在几乎都是使用 COM 实现的。因此, .NET 能够提供现有 COM 组件的包装器 (wrapper),以便 .NET 组件与之通信。 Microsoft 已经扩展了 C+,提供了一种新语言 J#,还对 VB 进行了很多改进,把它转变成为功能更强大的 VB.NET,并允许把用这些语言编写的代码用于 .NET 环境 。但这些语言都因有多年演化的痕迹,所以不能完全用现在的技术来编写。 在使用 .NET Framework 1.0 和 V
4、isual Studio .NET 2002 时,要创建可移动应用程序,就必须下载 Microsoft Mobile Internet Toolkit(MMIT)。而现在,有了 .NET Framework 1.1 和 Visual Studio .NET 2003,就可以直接创建可移动应用程序,不需要下载其他工具包了。 在使用 Visual Studio .NET 2003 创建新项目时,这是显而易见的。例 如,在查看 - 2 - 可以创建的 C#项目类型列表时,会看到 ASP.NET Mobile Web Application 和 Smart Device Application。 AS
5、P.NET Mobile Web Application 项目类型可以用于建立基于 Web的可移动应用程序。 Smart Device Application 项目类型可以创建用于 Pocket PC 或其他 Windows CE 设备的应用程序。为 Windows CE 设备建立的第三方客户应用程序利用的是 Compact Framework,这是 .NET Framework 的删节版本。 打开任何一种可移动项目类型,系统就会在 Visual Studio .NET 工具箱中 列出一组可用的可移动服务器控件,然后用户就可以使用这些控件创建应用程序。 在新的架构中,另一个大的变化是 ADO.
6、NET。 ADO.NET 是访问和处理数据的 .NET 方式,现在它有两个新的数据提供程序,其中一个用于 ODBC,另一个用于Oracle。 在使用 .NET Framework 1.0 时,就可以使用 ODBC 数据提供程序,但它需要单独下载。另外,一旦下载,这个数据提供程序的命名空间就是 Microsoft.Data.Odbc。 而在 .NET Framework 1.1 中, ODBC 数据提供程序是内置的,不需要单独下载。而且可以通过 System.Data.Odbc 命名空间来使用 ODBC 数据源,访问 ODBC 数据连接、数据适配器和数据读取器对象。 另一个新的数据提供程序用于处
7、理 Oracle 数据库。该数据库在企业中的应用非常广泛,缺乏 Oracle 数据提供程序常常是 .NET 进入企业的一大障碍。为了使用这个新的数据提供程序,需要在项目中引用 System.Data.OracleClient 命名空间。 并发执行 side-by-side execution 是指在同一个服务器上运行应用程序的多个版本,其中不同的应用程序版本使用不同的运行库版本。 Microsoft 一直都向开发人员承诺提供这个功能,但该功能总是很难可视化,因为只能使用 Framework 的一个版本。在发布了 Framework 的第 2 版 .NET Framework 1.1 后,就可以
8、看到 Microsoft 提供的这个功能了。现在,可以创建 .NET 应用程序面向 .NET Framework 1.1 的新版本,同时还可以让面向 .NET Framework 1.0 的旧应用程序像以前那样继续运 行。 最近,许多 Internet使用 IP 4运行, IP4也称为 IPv4。它提供了 IP 地址,例如 255.255.255. 255。 .NET Framework 1.1 现在支持 IPv6, IPv6 是在 1995 年创建的,解决了 IPv4 所面临的许多问题。如果人们一直采用 IPv4,将很快用尽可用的 IP 地址。 .NET Framework 1.1 通过 S
9、ystem.Net 命名空间支持 IPv6, ASP.NET 和 XML Web服务也支持 IPv6。 在升级 .NET Framework 时,还对 Visual Studio .NET 本 身进行了升级。注意,在 - 3 - 开始页面上有一些新图形,该页面上对象的组织方式也有所不同。另外,新 IDE 最重大的变化是,一旦安装,就不是简单地把 Visual Studio .NET 2002 升级为 Visual Studio .NET 2003,而是安装了一个全新的 IDE 版本。如果机器上已经安装了 Visual Studio .NET 2002,就会得到两个完全独立的 VS.NET ID
10、E。这样,如果要创建和使用面向 .NET Framework 1.0 的应用程序,就使用 VS.NET 2002;如果 要创建和使用面向 .NET Framework 1.1 的应用程序,就使用 VS.NET 2003。 还应注意,在打开用 VS.NET 2002 创建的项目时,系统会询问是否要把项目升级为 VS.NET 2003 项目,如果回答“是”,就会把项目升级为面向 .NET Framework 1.1的应用程序。注意,这是一个不可逆的过程。 除了这些较大的变化之外,在 VS.NET 2003 的 IDE 中, Intellisense 的智能化程度更高,代码自动完成功能更强。 C#在
11、某种程度上可以看作是 .NET 面向 Windows 环境的一种编程语言。在过去的十几年里, Microsoft 给 Windows 和 Windows API 添加了许多功能, VB 和 C+也经历了许多变化。虽然 VB 和 C+最终已成为非常强大的语言,但这两种语言也存在问题,因为它们保留了原来的一些内容。 对于 Visual Basic 来说,它的主要优点是很容易理解,许多编程工作都很容易完成,基本上隐藏了 Windows API 和 COM 组件结构的内涵。其缺点是 Visual Basic 从来没有实现真正意义上的面向对象,所以大型应用程序很难分解和维护。另外,因为VB 的语法继承于
12、 BASIC 的早期版本 (BASIC 主要是为了 让初学者更容易理解,而不是为了编写大型商业应用程序 ),所以不能真正成为结构化或面向对象的编程语言。 另一方面, C+在 ANSI C+语言定义中有其自己的根。它与 ANSI 不完全兼容,因为 Microsoft 是在 ANSI 定义标准化之前编写 C+编译器的,但已经相当接近了。遗憾的是,这导致了两个问题。其一, ANSI C+是在十几年前的技术条件下开发的,因此不支持现在的概念 (例如 Unicode 字符串和生成 XML 文档 ),某些古老的语法结构是为以前的编译器设计的 (例如成员函数的声明和定义是分开的 )。其二, Microsoft同时还试图把 C+演变为一种用于在 Windows 上执行高性能任务的语言 在语言中避免添加大量 Microsoft 专用的关键字和各种库。其结果是在 Windows 中,该语言成为了一种非常杂乱的语言。让一个 C+开发人员说说字符串有多少个定义方式就可以说明这一点: char*、 LPTSTR、 string、 CString (MFC 版本 )、 CString (WTL 版本 )、wchar_t*和 OLECHAR*等。