.NET Framework 2.0 版中的新增功能

更新:2007 年 11 月

在 Microsoft .NET Framework 1.1 版的基础上,.NET Framework 2.0 版进行了扩展,不仅对现有的功能做了改进,还新增了一些功能,并对文档进行了增强。 本节提供有关某些主要添加和修改的信息。

有关可能影响您的应用程序的重大更改的更多信息,请参见 Breaking Changes in the .NET Framework(.NET Framework 中的重大更改)。

64 位平台支持

新一代的 64 位计算机使人们能够创建比 32 位应用程序运行更快并且能够比 32 位应用程序更好地利用内存的应用程序。 对 64 位应用程序的新支持使用户能够在 64 位计算机上生成托管代码库或方便地使用非托管代码库。 有关更多信息,请参见 64 位应用程序

访问控制列表支持

访问控制列表 (ACL) 用于授予或撤消对计算机上的资源的访问权限。 .NET Framework 中已添加了允许托管代码创建和修改 ACL 的新类。 I/O 类、注册表类和线程类中添加了使用 ACL 的新成员。

ADO.NET

ADO.NET 中的新功能包括对用户定义类型 (UDT)、异步数据库操作、XML 数据类型、大值类型和快照隔离的支持,以及对允许应用程序通过 SQL Server 2005 支持多活动结果集 (MARS) 的新属性的支持。 有关 ADO.NET 的这些新功能以及其他 ADO.NET 新功能的更多信息,请参见 ADO.NET 中的新增功能

ASP.NET

Microsoft .NET Framework 2.0 包含了对 ASP.NET 各个方面的重要增强。对于网页开发,新的控件使得向动态网页添加常用功能更加方便。 新的数据控件使得无需编写代码即可在 ASP.NET 网页上显示和编辑数据成为可能。 经过改善的代码隐藏模型使得开发 ASP.NET 页更容易也更可靠。 缓存功能提供了用来缓存页的多种新方式,包括在 SQL Server 数据库的表上生成缓存依赖项的能力。

现在,您可以以多种方式自定义网站和网页。 配置文件属性使 ASP.NET 能够自动跟踪单个用户的属性值。 通过使用 Web 部件,您可以创建用户可在浏览器中自定义的页。 您可以使用简单控件添加导航菜单。

对网站功能的改进使您可以更加方便快捷地创建专业网站。 母版页使您可以为站点中的所有页创建一致的布局,而主题使您可以为控件和静态文本定义一致的外观。 若要帮助保护您的站点,您可以预编译网站以从源文件(代码文件和 .aspx 页中的标记)生成可执行代码。 然后,您可以将结果输出部署到成品服务器,结果输出不包含任何源信息。 对 ASP.NET 的增强还包括可使网站开发人员、服务器管理员和托管人员更容易地进行网站管理的新的工具和类。

ASP.NET 适合于多种浏览器和设备。 默认情况下,控件呈现符合 XHTML 1.1 标准的输出。 您可以使用设备筛选针对不同的浏览器为相同的控件指定不同的属性值。

已验证身份的流

应用程序可使用新的 NegotiateStreamSslStream 类进行身份验证,并帮助保护在客户端和服务器之间传输的信息的安全。 这些已验证身份的流类支持相互身份验证、数据加密和数据签名。 NegotiateStream 类使用协商安全协议进行身份验证。 SslStream 类使用安全套接字层 (SSL) 安全协议进行身份验证。

COM 互操作服务增强功能

类和工具中增加了四种支持与 COM 的互操作性的主要增强功能:

  • 操作系统维护有限数量的句柄,这些句柄用来引用关键操作系统资源。 新的 SafeHandleCriticalHandle 类及其专用派生类提供了对操作系统句柄进行操作的安全可靠的方式。

  • 对封送处理的改进使得与本机代码交互操作更加容易。 对互操作封送拆收器的两种增强功能满足了最常见的两种用户要求:将本机函数指针包装到委托中的能力以及在结构内部封送固定大小的结构数组的能力。

  • 对于常见调用类型,不同应用程序域中的应用程序之间的调用性能速度更快。

  • 类型库导入程序 (Tlbimp.exe)类型库导出程序 (Tlbexp.exe) 的新开关消除了对注册表解析类型库引用的依赖性。 此增强对于创建可靠的生成环境非常重要。

Console 类增补

Console 类的新成员使应用程序能够操作控制台窗口和屏幕缓冲区的大小;移动屏幕缓冲区的矩形区域(这对于执行平滑简单的动画很有用);并在读取控制台输入时等待,直至按下某个键。 其他新的类成员控制文本的前景色和背景色、光标的可见性和大小以及控制台提示音的频率和持续时间。

数据保护 API

新的数据保护 API (DPAPI) 包含四种方法可使应用程序无需调用平台调用即可加密密码、密钥、连接字符串等。 您还可以在运行 Windows Server 2003 或更高版本操作系统的计算机上加密内存块。

调试器显示属性

现在,您可以控制当调试应用程序时 Visual Studio 显示类或成员的方式。 调试器的显示属性功能使您能够标识要在调试器中显示的最有用的信息。

调试器编辑并继续支持

.NET Framework 2.0 重新引入了“编辑并继续”功能,该功能使在 Visual Studio 中调试应用程序的用户能够在以中断模式执行的同时更改源代码。 在应用对源代码所做的编辑之后,用户可以继续执行代码并观察效果。 而且,“编辑并继续”功能在 Visual Studio 所支持的任何编程语言中都可用。

检测网络连接更改

NetworkChange 类可使应用程序在网络接口(也称为网卡或适配器)的 Internet 协议 (IP) 地址发生更改时接收通知。 更改接口地址的原因有多种,如网线断开、超出了无线局域网的范围或者硬件故障。 NetworkChange 类通过在检测到地址更改时引发事件来提供地址更改通知。

分布式计算

System.Net 命名空间中,现已添加对 FTP 客户端请求、HTTP 资源缓存、自动代理发现以及获取网络流量和统计信息的支持。 该命名空间现在包含一个 Web 服务器类 (HttpListener),您可以用它来创建简单的 Web 服务器以响应 HTTP 请求。 已对生成网络流量的类进行检测以输出用于应用程序调试和诊断的跟踪信息。 System.Net.Sockets.SocketSystem.Uri 类中添加了安全和性能增强。

System.Web.Services 命名空间中,添加了对 SOAP 1.2 和可以为 null 的元素的支持。

System.Runtime.Remoting.Channels 命名空间中,添加了信道安全功能。 TCP 信道现在支持身份验证和加密,以及多种用于更好地支持负载平衡的新功能。

EventLog 增强功能

现在您可以对 EventLog 消息、参数和类别使用自定义 DLL。

扩展的证书管理

.NET Framework 现在支持 X.509 证书存储区、证书链和证书扩展。 此外,您可以使用 X.509 证书签名和验证 XML,而无需使用平台调用。 还有对 PKCS7 签名和加密以及 CMS(Microsoft Windows 2000 和更高版本操作系统上可用的 PKCS7 标准的超集)的支持。 PKCS7 是安全/多用途 Internet 邮件扩展 (S/MIME) 中用于签名和加密数据的基础格式。 有关更多信息,请参见 X509Certificate2 类主题。

FTP 支持

应用程序现在可以使用 WebRequestWebResponseWebClient 类访问文件传输协议资源。

泛型和泛型集合

.NET Framework 2.0 引入了泛型以使您能够创建灵活的可重用代码。 合称为泛型的语言功能充当模板,这些模板允许使用未指定的或泛型的类型参数(而不是使用具体的类型)来声明和定义类、结构、接口、方法和委托。 使用泛型时,实际类型是在稍后指定的。 多个命名空间(如 System NamespaceSystem.Collections.Generic)提供了泛型类和方法。 新的 System.Collections.Generic 命名空间提供了对强类型集合的支持。 有三种语言支持泛型:Visual Basic、C# 和 C++。

反射已得到扩展以允许泛型类型和方法的运行时检查和操作。System.TypeSystem.Reflection.MethodInfo 添加了新成员,包括标识泛型类型(例如 class Gen<T,U> {...})的 IsGenericType、获取类型参数列表的 GetGenericArguments 以及创建特定类型(例如 class Gen<T,U> {...})的 IsGenericType

全球化

五个新的全球化功能对于开发用于不同语言和区域性的应用程序提供了更广泛的支持。

  • 对自定义区域性的支持使您能够根据需要定义和部署区域性相关的信息。 此功能对于对现有区域性定义进行少量自定义以及创建 .NET Framework 中尚不存在的区域性定义非常有用。 有关更多信息,请参见 CultureAndRegionInfoBuilder 属性。

  • 编码和解码操作将 Unicode 字符与可传输到物理介质(如磁盘或通信线路)的字节流进行相互映射。 如果映射操作无法完成,则可以使用 System.Text 命名空间中的多个类所支持的新的编码和解码回退功能来加以弥补。

  • 实现 UTF-8 编码的 UTF8Encoding 类中的成员现在比以前的版本快几倍。 UTF-8 是用来将 Unicode 字符转换为计算机上的字节的最常用编码。

  • .NET Framework 现在支持 Unicode 联合会定义的最新规范化标准。 该规范化过程将文本的字符表示形式转换为标准形式以便可以比较这些表示形式是否相等。

  • GetCultureInfo 方法重载提供了 CultureInfo 只读对象的缓存版本。 创建新的 CultureInfo 对象时使用该缓存版本可提高系统性能并减少内存使用量。

I/O 增强功能

已经对各种 I/O 类的可用性和功能进行了改进。 用户现在可以更加容易地读写文本文件并获取有关驱动器的信息。

现在,您可以使用 System.IO.Compression 命名空间中的类以 GZIP 压缩和解压缩标准读写数据,IETF RFC 1951 和 RFC 1952 规范中对这些标准进行了说明,您可以从 IETF Request for Comments (RFC)(IETF 请求注释)搜索页获取这两个规范。 注:搜索仅限于 RFC 编号。

基于清单的激活

此功能提供了通过使用清单加载和激活应用程序的新支持。 基于清单的激活对于支持 ClickOnce 应用程序至关重要。 传统上,应用程序是通过对包含应用程序入口点的程序集的引用激活的。 例如,从 Windows 外壳程序内单击应用程序的 .exe 文件将使外壳程序加载公共语言运行时 (CLR) 并调用该 .exe 文件的程序集内的已知入口点。

基于清单的激活模型使用应用程序清单而不是程序集来激活。 清单完全描述应用程序、应用程序的依赖项、安全要求等。 与基于程序集的激活模型相比,清单模型具有几个优点,特别是对于 Web 应用程序而言。 例如,清单包含应用程序的安全要求,这使得用户能够决定在下载代码前是否允许应用程序执行。 清单还包含有关应用程序依赖项的信息。

基于清单的激活由一组 API 提供,这些 API 允许托管主机激活由清单描述的应用程序和外接程序。 这些 API 混合包含了新类以及对现有类的扩展。

此激活模型还调用称为“信任关系管理器”的实体,该实体执行以下任务:

  1. 确定是否允许激活应用程序。 此决定可通过提示用户、查询策略或任何其他认为适合于给定“信任关系管理器”的方式作出。

  2. 设置在其中运行应用程序的安全上下文。通常,此步骤涉及在要运行应用程序的应用程序域上设置一个代码访问安全 (CAS) 策略树。

.NET Framework 远程处理

.NET Framework 远程处理现在支持 IPv6 地址以及泛型类型的交换。 System.Runtime.Remoting.Channels.Tcp 命名空间中的类支持使用安全支持提供程序接口 (SSPI) 的身份验证和加密。 新的 System.Runtime.Remoting.Channels.Ipc 命名空间中的类允许同一台计算机上的应用程序迅速通信而无需使用网络。 最后,现在您可以配置连接缓存超时和方法重试次数,这可以提高网络负载平衡远程群集的性能。

获取有关本地计算机网络配置和使用情况的信息

通过使用 System.Net.NetworkInformation 命名空间中的类,应用程序可以访问 IP、IPv4、IPv6、TCP 和 UDP 网络流量的统计信息。 应用程序还可以查看本地计算机网络适配器的地址和配置信息。 这些信息类似于 Ipconfig.exe 命令行工具返回的信息。

Ping

Ping 类可使应用程序确定是否可通过网络访问远程计算机。 此类提供类似于 Ping.exe 命令行工具的功能,并支持同步和异步调用。

从应用程序内部处理 HTTP 请求

您可以使用 HttpListener 类来创建响应 HTTP 请求的简单 Web 服务器。 该 Web 服务器在 HttpListener 对象的生存期内是活动的,并以应用程序的权限在应用程序中运行。 此类仅在运行 Windows XP Service Pack 2 或 Windows Server 2003 操作系统的计算机上可用。

缓存的编程空间

通过使用 System.Net.Cache 命名空间中的类,应用程序可以使用 WebRequestWebResponseWebClient 类控制所获取资源的缓存。 您可以使用 .NET Framework 提供的预定义缓存策略或指定自定义缓存策略。 可以为每个请求指定一个缓存策略,并为未指定缓存策略的请求定义默认缓存策略。

编程语言

四种 Microsoft 编程语言是明确针对 .NET Framework 的:Visual C#、Microsoft C/C++、Visual J# 和 Visual Basic。

Visual Basic 编译器和语言

Visual Basic 中的语言改进简化了源代码,并且启用了与使用高级功能的组件的交互。

编译器

Visual Basic 为所有项目引入了新的条件编译常数 VBC_VER。 此版本的值为 VBC_VER 8.0。

Visual Basic 命令行编译器现在将默认命令行选项存储在 Vbc.rsp 文件中,该文件与命令行编译器 (Vbc.exe) 位于同一个目录中。 您可以编辑 Vbc.rsp 以重新配置默认命令行选项。

有四个新的命令行编译器选项:

  • /doc 选项根据代码中的注释生成 XML 文档文件。

  • /noconfig 选项使编译器忽略 Vbc.rsp 文件。

  • /codepage 选项指定在打开源文件时使用哪个代码页。

  • /filealign 选项指定输出文件中的节大小。

  • /nostdlib (Visual Basic) 选项使编译器不引用标准库。

有关更多信息,请参见 Visual Basic 编译器选项

语言

在此版本的 Visual Basic 语言中有多个新元素:

安全性异常

System.Security.SecurityException 类已得到扩展以提供有利于调查安全性异常起因的附加数据。 新属性提供了很多信息,包括发生异常的方法、第一个失败的权限、程序集的区域或 URL、失败的安全性操作以及引发异常的对调用堆栈的安全性操作,如 Deny 或 PermitOnly。

串行 I/O 设备支持

新的 SerialPort 类为应用程序提供了访问计算机串行端口以及与串行 I/O 设备进行通信的能力。

序列化

BinaryFormatterSoapFormatter 类现在提供了版本容错序列化,这种序列化可使一种类型从另一个版本的序列化进行反序列化。 有关更多详细信息,请参见版本容错序列化

XML 序列化现在支持使用属性而不是字段来表示架构元素,支持泛型类型的序列化,并且支持使用 Nullable<T> 结构来表示可以为 null 的元素。 IXmlSerializable 接口支持自定义架构生成。 SchemaImporterExtension 可使您在架构导入期间更改架构来控制代理代码生成。 例如,您可以在使用 Visual Studio 的“添加 Web 引用”功能或使用 Web 服务描述语言工具 (Wsdl.exe) 时更改生成的代理。

新的 XML 序列化程序生成器工具 (Sgen.exe) 可使您预编译 Web 服务客户端使用的代码以序列化传输的信息,这将大大缩短客户端启动时间。 有关更多详细信息,请参见XML 序列化简介

SMTP 支持

通过使用 System.Net.MailSystem.Net.Mime 命名空间中的类,应用程序可以将电子邮件发送给一个或多个收件人。 邮件可用不同的可选视图发送并且可包含附件。 同时支持抄送和密件抄送。

强类型资源支持

资源文件生成器 (Resgen.exe) 创建嵌入在可执行文件和附属程序集中的资源文件。 Resgen.exe 为每个资源文件生成一个包装类,该类可使您方便地访问资源并防止资源名称的拼写错误。

线程改进

现在,您可以命名完全在托管代码中创建的进程间通信事件。 Semaphore 类还支持专用资源计数。

跟踪数据筛选

.NET Framework 2.0 提供了跟踪和记录与 I/O、应用程序启动和关闭等有关的系统事件的类。 然而,由于跟踪信息数量巨大而且类型多样,这使得用户难以分析这些数据。 新的对跟踪数据筛选的支持使您能够指定要记录的信息的类型。

事务

新的 System.Transactions 命名空间包含的类可使应用程序参与由 Microsoft 分布式事务处理协调器 (MSDTC) 或本地事务管理器管理的事务。 System.Transactions 命名空间提供基于 Transaction 类的显式编程模型和使用 TransactionScope 类的隐式编程模型,在后一种模型中,事务由该基础结构自动管理。 此事务基础结构可以方便地与现有的 System.EnterpriseServices (COM+) 事务基础结构交互操作。 System.Transactions 命名空间还提供用于实现资源管理器的类。 资源管理器管理事务中使用的持久或可变数据,并与事务管理器协作为应用程序提供原子性和隔离性的保证。

Web 服务

Web 服务支持 SOAP 1.2 和 WS-I 基本概要 1.0,后者记录在“Web Services Interoperability Organization - Basic Profile Version 1.0(Web 服务互操作性组织 -- 基本概要 1.0 版)”中。

在使用定义共享类型的两个或更多 Web 服务时,为这些 Web 服务生成的客户端代理共享客户端上相应的类型。 这使客户端可以在 Web 服务之间方便地传递共享类型的实例。

现在您可以使用基于事件的编程模式异步调用 Web 方法。

Windows 窗体相关的功能

ClickOnce 部署

ClickOnce 部署使您能够部署自行更新的 Windows 应用程序,这类应用程序可以像 Web 应用程序一样轻松地安装和运行。 您可以部署 Windows 客户端和命令行应用程序。 Visual Studio 中的“生成”和“项目”菜单上提供了新的“发布项目”命令。 有关更多信息,请参见 ClickOnce 部署概述

应用程序设置

Windows 窗体的应用程序设置使得在客户端上创建、存储和维护自定义应用程序和用户首选项变得容易进行。 通过 Windows 窗体设置,您不仅可以存储应用程序数据(如数据库连接字符串),还可以存储特定于用户的数据(如工具栏位置和最近使用的列表)。 有关更多信息,请参见应用程序设置概述

新的数据绑定模型

因为 BindingSource 组件充当了绑定控件和目标数据源的中间源,所以简化了数据绑定的过程。 它自动管理很多更难的绑定问题,例如货币、与数据有关的事件以及目标数据源更改。 它还被设计为与其他和数据相关的 Windows 窗体控件交互操作,尤其是 BindingNavigatorDataGridView 控件。 有关更多信息,请参见 BindingSource 组件BindingSource 组件简化了将控件绑定到基础数据源的过程。 它既充当导管,也充当其他控件所绑定到的数据源。

新的 Windows 窗体控件

DataGridView 控件提供了一种强大而灵活的方法,用来以表格的形式显示数据。 它可以用来显示少量数据的只读视图,或可以缩放以显示非常大的数据集的可编辑视图。 数据可以驻留在外部数据源中,也可以直接添加到控件。有关更多信息,请参见 DataGridView 控件概述(Windows 窗体)

ToolStrip 控件是 Windows 窗体应用程序中可承载菜单、控件和用户控件的工具栏。 ToolStrip 类及其关联类使您能够创建与 Microsoft Windows XP、Microsoft Office 和 Microsoft Internet Explorer 样式一致的工具栏和其他用户界面元素。 您还可以使用这些类来自定义工具栏和用户界面元素。有关更多信息,请参见 ToolStrip 控件概述(Windows 窗体)

MaskedTextBox 控件使用掩码定义来区分有效和无效的用户输入。有关更多信息,请参见 MaskedTextBox 控件(Windows 窗体)

Windows 窗体 SoundPlayer 类使您能够轻松地在应用程序中包含声音。 SoundPlayer 类可以播放来自资源或者来自通用命名约定 (UNC) 或 HTTP 位置的 .wav 格式的声音文件。 此外,SoundPlayer 类使您能够异步加载或播放声音。有关更多信息,请参见 SoundPlayer 类

可以将 Windows 窗体 SplitContainer 控件看作是一个复合体,它是由一个可移动的拆分条分隔的两个面板。 当鼠标指针悬停在该拆分条上时,光标将相应地更改以显示该拆分条是可移动的。 使用此控件可创建对于显示和浏览信息有效的、可调整大小的复杂用户界面。 有关更多信息,请参见 SplitContainer 控件

ListView 控件现在支持三种由 Windows XP 和 Windows Server 2003 系列提供的功能:平铺视图、分组和拖放项重新定位。

ListViewTreeViewToolTip 控件现在支持类似于以前版本中的对 ComboBoxListBoxMenuItemTabControl 控件的所有者描述支持的所有者描述功能。

WebBrowser 控件使您可以在 Windows 窗体应用程序中承载网页。 您可以使用 WebBrowser 控件在应用程序中提供基于 HTML 的集成用户帮助或 Internet Web 浏览功能。 此外,您还可以使用 WebBrowser 控件将现有 Web 应用程序转换为将动态 HTML (DHTML) 代码与 Windows 窗体的用户界面功能无缝集成的客户端应用程序。 有关更多信息,请参见 WebBrowser 控件概述

FlowLayoutPanel 控件在水平或垂直流方向排列其内容。 TableLayoutPanel 控件以网格方式排列其内容。 因为在设计时和运行时都执行布局,所以当应用程序环境更改时,布局可以动态更改。 有关更多信息,请参见 FlowLayoutPanel 控件概述TableLayoutPanel 控件概述

BackgroundWorker 组件使您能够在后台执行可能花费很长时间执行的操作,例如图像下载和数据库事务。 有关更多信息,请参见 BackgroundWorker 组件概述

组件的异步模式是一种事件驱动的模型,它提供了多线程应用程序的优点,同时隐藏了多线程设计中固有的很多复杂问题。 有关更多信息,请参见组件的异步模式

与 XML 相关的功能

.NET Framework 2.0 提供了很多增强功能,包括新的 XSL 转换 (XSLT) 处理器;XmlReaderXmlWriterXPathNavigator 类中的类型支持;以及 XPathNavigator 类中的新的编辑功能。 此外,还有用于创建 XmlReaderXmlWriter 对象的新模型,以及很多性能改进。 有关更多信息,请参见 System.Xml 中的新增功能

请参见

概念

快速技术查找器

其他资源

.NET Framework 概述