.NET Framework 4 中的新增功能
本主题包含有关 .NET Framework 4 版中的主要功能和改进的信息。 此主题不提供有关所有新增功能的完整信息,并有可能会发生更改。
.NET Framework 4 引进了改进的安全模式。 有关更多信息,请参见.NET Framework 4 中的安全性更改。
以下各节介绍了 .NET Framework 4 的其它新增功能和改进:
应用程序兼容性和部署
核心新增功能和改进
Managed Extensibility Framework
并行计算
网络
Web
客户端
数据
Windows Communication Foundation
Windows Workflow Foundation
有关添加到现有类型中的新命名空间、新类型和新成员的列表,请参见 .NET Framework 4 中的新增类型和成员。
Visual Studio 2010 Service Pack 1 (SP1) 包含对 .NET Framework 4 的更新。
应用程序兼容性和部署
.NET Framework 4 与使用 .NET Framework 早期版本生成的应用程序有很高的兼容性,除了提高安全性、标准遵从性、正确性、可靠性和性能所做的一些更改之外。
.NET Framework 4 不能自动使用自己的公共语言运行时版本来运行由 .NET Framework 早期版本生成的应用程序。 若要使用 .NET Framework 4 运行较早的应用程序,则必须使用 Visual Studio 中项目的属性指定的目标 .NET Framework 版本编译应用程序, 或使用应用程序配置文件中的 <supportedRuntime> 元素 可指定所支持的运行时。
如果安装 .NET Framework 4 后,您的应用程序或组件无法运行,请在 Microsoft Connect 网站上提交 bug。 您可以按照 .NET Framework 4 Application Compatibility(.NET Framework 4 应用程序兼容性)主题中的描述测试兼容性,并通过 Visual Studio 2010 and .NET Framework 4 Walkthroughs(Visual Studio 2010 和 .NET Framework 4 演练)来了解新增功能。
有关迁移到 .NET Framework 4 的指南,请参见 .NET Framework 4 的迁移指南和 .NET Framework 的版本兼容性。
以下各节介绍了部署改进。
Client Profile
.NET Framework 4 Client Profile 比以前的版本支持更多平台,并可提供应用程序的快速部署体验。 默认情况下,一些新增的项目模板现在以 .NET Framework 4 Client Profile 为目标。 有关更多信息,请参见 .NET Framework Client Profile。
进程内并行执行
此功能使应用程序能够在同一个进程中加载和启动多个版本的 .NET Framework。 例如,您可以运行在同一进程中加载基于 .NET Framework 2.0 SP1 的外接程序(或组件)和基于 .NET Framework 4 的外接程序的应用程序。 较旧组件可继续使用 .NET Framework 的较旧版本,新组件则使用 .NET Framework 的新版本。 有关更多信息,请参见进程内并行执行。
可移植类库
安装 Visual Studio 2010 Service Pack 1 (SP1) 和 Portable Library Tools 后,您可创建不必重新编译即可在各种 .NET Framework 平台上运行的可移植类库。 有关更多信息,请参见可移植类库。
返回页首
核心新增功能和改进
以下各节介绍公共语言运行时和基类库提供的新增功能和改进。
诊断和性能
.NET Framework 的早期版本没有提供用于确定特定应用程序域是否影响其他应用程序域的方法,因为操作系统 API 和工具(例如,Windows 任务管理器)仅精确到进程级别。 从 .NET Framework 4 开始,您可以获得每个应用程序域的处理器使用情况和内存使用情况估计值。
可监控各个应用程序域对 CPU 和内存的使用情况。 通过托管承载 API、本机承载 API 以及 Windows 事件跟踪 (ETW),可提供应用程序域资源监控。 在启用此功能后,将在进程的生存期内收集有关进程中所有应用程序域的统计信息。 请参见新增的 AppDomain.MonitoringIsEnabled 属性。
您现在可以访问 ETW 事件以用于诊断目的,从而改进性能。 有关更多信息,请参见 CLR ETW 事件和控制 .NET Framework 日志记录。 另外,请参见 性能计数器和进程内并行应用程序。
System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute 特性使托管代码能够处理指示损坏进程状态的异常。
全球化
.NET Framework 4 提供了新的非特定和特定区域性、更新的属性值、字符串处理的改进以及其他一些改进。 有关更多信息,请参见全球化和本地化中的新增功能。
垃圾回收
.NET Framework 4 提供背景垃圾回收。 此功能替代了以前版本中的并发垃圾回收并提高了性能。 有关更多信息,请参见 垃圾回收的基础。
代码协定
代码协定允许您指定方法或类型的签名没有单独表示的协定信息。 新的 System.Diagnostics.Contracts 命名空间包含的类可提供一种与语言无关的方式以前置条件、后置条件和对象固定的形式来表示编码假设。 这些协定利用运行时检查改进了测试,启用了静态协定验证并支持文档生成。 有关更多信息,请参见代码协定。
仅用于设计时的互操作程序集
您不必再提供主互操作程序集 (PIA),即可部署与 COM 对象进行交互的应用程序。 在 .NET Framework 4 中,编译器可以嵌入互操作程序集中的类型信息,仅选择应用程序(如外接程序)实际使用的类型。 由公共语言运行时确保类型安全。 请参见在托管代码中使用 COM 类型和演练:嵌入 Microsoft Office 程序集中的类型信息(C# 和 Visual Basic)。
动态语言运行时
动态语言运行时 (DLR) 是一种新运行时环境,它将一组适用于动态语言的服务添加到 CLR。 借助于 DLR,可以更轻松地开发要在 .NET Framework 上运行的动态语言,而且向静态类型化语言添加动态功能也会更容易。 为了支持 DLR,在 .NET Framework 中添加了新 System.Dynamic 命名空间。
表达式树由表示控制流的新类型(如 System.Linq.Expressions.LoopExpression 和 System.Linq.Expressions.TryExpression)进行了扩展。 动态语言运行时 (DLR) 将使用这些新增类型,而 LINQ 不会使用。
此外,System.Runtime.CompilerServices 命名空间中还添加了多个支持 .NET Framework 基础结构的新类。 有关更多信息,请参见动态语言运行时概述。
协变和逆变
现在,有多个泛型接口和委托支持协变和逆变。 有关更多信息,请参见泛型中的协变和逆变。
BigInteger 和复数
新的 System.Numerics.BigInteger 结构是一个任意精度 Integer 数据类型,它支持所有标准整数运算(包括位操作)。 可以通过任何 .NET Framework 语言使用该结构。 此外,一些新 .NET Framework 语言(例如 F# 和 IronPython)对此结构具有内置支持。
新的 System.Numerics.Complex 结构表示一个复数,它支持使用复数的算术运算和三角运算。
元组
.NET Framework 4 提供了用于创建包含结构化数据的元组对象的 System.Tuple 类。 它还提供了泛型元组类以支持具有 1 到 8 个组件的元组(即,从单一实例到八元组)。 为了支持具有 9 个或更多组件的元组对象,提供了一个具有 7 个类型参数和任何元组类型的第 8 个参数的泛型元组类。
文件系统枚举改进
新的文件枚举方法可以提高访问大文件目录或循环访问大文件中的行的应用程序的性能。 有关更多信息,请参见如何:枚举目录和文件。
内存映射文件
.NET Framework 现在支持内存映射文件。 可以使用内存映射文件编辑非常大的文件和创建共享内存以进行进程间通信。
64 位操作系统和进程
使用 Environment.Is64BitOperatingSystem 和 Environment.Is64BitProcess 属性可以标识 64 位操作系统和进程。
打开基项时,可以使用 Microsoft.Win32.RegistryView 枚举指定 32 位或 64 位注册表视图。
其他新增功能
以下列表介绍其他新增功能、改进和便利。 其中的几个功能是根据客户建议增加的。
为了支持区分区域性的格式设置,System.TimeSpan 结构包含了 ToString、Parse 和 TryParse 方法的新重载,以及新的 ParseExact 和 TryParseExact 方法。
新的 String.IsNullOrWhiteSpace 方法指示字符串是否为 null、为空或仅包含空白字符。 已向 String.Concat 和 String.Join 方法添加了可以连接 System.Collections.Generic.IEnumerable<T> 集合的成员的新重载。
您可以使用 String.Concat 方法将可枚举集合中的每个元素连接在一起,而无需先将元素转换成字符串。
可以使用的两种新的简便方法是:StringBuilder.Clear 和 Stopwatch.Restart。
新的 Enum.HasFlag 方法确定在某个枚举值中是否设置了一个或多个位域或标志。 Enum.TryParse 方法返回一个布尔值,指示能否成功分析字符串或整数值。
System.Environment.SpecialFolder 枚举包含多个新文件夹。
现在可以使用从 System.IO.Stream 类继承的类中的 CopyTo 方法轻松地将一个流复制到另一个流中。
使用新的 Path.Combine 方法重载可组合文件路径。
新的 System.IObservable<T> 和 System.IObserver<T> 接口为基于推送的通知提供通用机制。
System.IntPtr 和 System.UIntPtr 类现在包括对加法运算符和减法运算符的支持。
现在可以通过将类型包装在 System.Lazy<T> 类内部,为任何自定义类型启用迟缓初始化。
新的 System.Collections.Generic.SortedSet<T> 类提供了一个按插入、删除和搜索后的排序顺序维护数据的自平衡树。 此类可实现新的 System.Collections.Generic.ISet<T> 接口。
System.IO.Compression.DeflateStream 和 System.IO.Compression.GZipStream 类的压缩算法得到了改进,以便不再扩充已压缩的数据。 此外,还移除了压缩流的 4 GB 大小限制。
新的 Monitor.Enter(Object, Boolean) 方法重载采用布尔值引用,并仅在成功进入监视器时才自动将其设置为 true。
可以使用 Thread.Yield 方法让调用线程执行准备好在当前处理器上运行的另一个线程。
System.Guid 结构现在包含 TryParse 和 TryParseExact 方法。
新的 Microsoft.Win32.RegistryOptions 枚举可用于指定计算机重新启动后不保留的可变注册表项。
注册表项不再受限于 255 个字符的最大长度。
返回页首
Managed Extensibility Framework
Managed Extensibility Framework (MEF) 是 .NET Framework 4 中的一个新库,可帮助您生成可扩展和可组合的应用程序。 使用 MEF 可指定可以扩展应用程序的位置,公开要提供给其他可扩展应用程序的服务并创建供可扩展应用程序使用的部件。 MEF 还可以基于元数据启用可用部件的便捷发现功能,而无需加载部件的程序集。 有关更多信息,请参见Managed Extensibility Framework 概述和 Managed Extensibility Framework。 有关 MEF 类型的列表,请参见 System.ComponentModel.Composition 命名空间。
返回页首
并行计算
.NET Framework 4 引入了用于编写多线程和异步代码的新编程模型,极大地简化了应用程序和库开发人员的工作。 该新模型使开发人员可以通过固有方法编写高效、细化且可伸缩的并行代码,而不必直接处理线程或线程池。 新的 System.Threading.Tasks 命名空间和其他相关类型支持此新模型。 并行 LINQ (PLINQ) 是 LINQ to Objects 的并行实现,能够通过声明性语法实现类似功能。 有关更多信息,请参见 .NET Framework 中的并行编程。
返回页首
网络
网络改进包含以下几个方面:
若干类中对于 Windows 身份验证的安全改进,包括 System.Net.HttpWebRequest、System.Net.HttpListener、System.Net.Mail.SmtpClient、System.Net.Security.SslStream 和 System.Net.Security.NegotiateStream。 对于 Windows 7 和 Windows Server 2008 R2 上的应用程序提供了扩展保护。 有关更多信息,请参见Integrated Windows Authentication with Extended Protection。
支持使用 IPv6 或 Teredo 的网络地址转换 (NAT) 遍历。 有关更多信息,请参见NAT Traversal using IPv6 and Teredo。
提供有关 HttpWebRequest 对象的信息的新的网络性能计数器。 有关更多信息,请参见联网性能计数器。
在 System.Net.HttpWebRequest 类中,支持在 AddRange 方法的新重载中使用大字节范围标头(64 位范围)。 System.Net.HttpWebRequest 类的新属性允许应用程序设置很多 HTTP 标头。 可使用 Host 属性设置 HTTP 请求中独立于请求 URI 的 Host 标头值。
对于 System.Net.Mail.SmtpClient 和相关类的安全套接字层 (SSL) 支持。
改进了对 System.Net.Mail.MailMessage 类中的邮件标头的支持。
对在加密中使用 null 密码的支持。 可以通过使用 System.Net.ServicePointManager 类和 EncryptionPolicy 属性指定加密策略。 System.Net.Security.SslStream 类的构造函数现在采用 System.Net.Security.EncryptionPolicy 类作为参数。
System.Net.NetworkCredential 类中提供了用于基于密码的身份验证方案(例如基本、摘要、NTLM 和 Kerberos 身份验证)的凭据。 为了提高安全性,现在可将密码作为 System.Security.SecureString 实例而不是 System.String 实例进行处理。
在 System.Uri 和 System.Net.HttpListener 类中指定如何转换和规范化使用百分号编码值的 URI 能力。 有关更多信息,请参见 System.Net.Configuration.HttpListenerElement、System.Configuration.SchemeSettingElement、System.Configuration.SchemeSettingElementCollection 和 System.Configuration.UriSection 类。
返回页首
Web
ASP.NET 4 版在以下几个方面引入了新功能:
核心服务,包括可用来扩展缓存的新 API、支持对会话状态的数据进行压缩以及新的应用程序预加载管理器(自动启动功能)。
Web 窗体,包括对 ASP.NET 路由的更集中化支持、对 Web 标准的增强支持、更新的浏览器支持、数据控件的新功能以及视图状态管理的新功能。
Web 窗体控件,包括新的 Chart 控件。
MVC,包括视图的新帮助器方法、对分区的 MVC 应用程序的支持以及异步控制器。
动态数据,包括对现有 Web 应用程序的支持、对多对多关系和继承的支持、新的字段模板和特性以及增强的数据筛选。
Microsoft Ajax,包括对 Microsoft Ajax 库中的基于客户端的 Ajax 应用程序的附加支持。
Visual Web Developer,包括改进的 JScript IntelliSense、针对 HTML 和 ASP.NET 标记的新的自动完成代码段和增强的 CSS 兼容性。
部署,包括用于自动化典型部署任务的新工具。
多目标,包括针对目标版本的 .NET Framework 中未提供的功能的更好的筛选功能。
有关这些功能的更多信息,请参见 ASP.NET 4 和 Visual Web Developer 中的新增功能。
返回页首
客户端
Windows Presentation Foundation (WPF) 版本 4 包含以下方面的更改和改进:
新控件,包括 Calendar、DataGrid 和 DatePicker。
VisualStateManager 支持更改控件的状态。
利用触控和操作,您可以创建在 Windows 7 上同时接收来自多个触控的输入的应用程序。
图形和动画支持布局舍入、像素着色器版本 3.0、缓存合成和缓动函数。
文本改进了文本呈现,并支持在文本框中自定义插入符号的颜色和选定内容的颜色。
InputBinding 的 Command 属性、动态对象和 Text 属性支持绑定。
XAML 浏览器应用程序 (XBAP) 支持与网页通信,并且支持完全信任部署。
利用 System.Windows.Shell 命名空间中新增的类型,您能够与 Windows 7 任务栏通信,还能将数据传递到 Windows shell。
Visual Studio 2010 中的 WPF 和 Silverlight 设计器中提供了各种设计器改进,有助于创建 WPF 或 Silverlight 应用程序。
有关更多信息,请参见 WPF 版本 4 的新增功能。
返回页首
数据
ADO.NET
ADO.NET 提供了一些用于 Entity Framework 的新功能,其中包括持久性未知对象、LINQ 查询中的函数以及自定义对象层代码生成。 有关更多信息,请参见 ADO.NET 中的新增功能。
动态数据
ASP.NET 4 的动态数据得到了增强,为您提供快速生成数据驱动网站的更强大功能。 这包括:
基于数据模型中定义的约束的自动验证。
可以使用属于动态数据项目一部分的字段模板轻松更改为 GridView 和 DetailsView 控件中的字段生成的标记。
有关更多信息,请参见 ASP.NET 4 和 Visual Web Developer 中的新增功能。
WCF Data Services — WCF 数据服务
ADO.NET 数据服务已重命名为“WCF 数据服务”,它具有以下新功能:
数据绑定。
计算实体集中的实体数。
服务器驱动的分页。
查询投影。
自定义数据服务提供程序。
二进制资源的流式处理。
有关更多信息,请参见 What's New in WCF Data Services。
返回页首
Windows Communication Foundation
Windows Communication Foundation (WCF) 提供以下改进:
基于配置的激活:取消了对具有 .svc 文件的要求。
System.Web.Routing 集成:通过允许使用无扩展 URL,使您能更好地控制服务的 URL。
多个 IIS 网站绑定支持:允许您在同一网站上具有多个使用相同协议的基址。
路由服务:允许您基于内容路由消息。
支持 WS-Discovery:允许您创建和搜索可发现服务。
标准终结点:预定义的终结点,可允许您只指定某些属性。
工作流服务:通过提供用于发送和接收消息的活动、基于内容关联消息的功能以及工作流服务主机来集成 WCF 和 WF。
WCF REST 功能:
Web HTTP 缓存:允许缓存 Web HTTP 服务响应。
Web HTTP 格式支持:允许您动态确定服务操作做出响应的最佳格式。
Web HTTP 服务帮助页:提供 Web HTTP 服务的自动帮助页,此页与 WCF 服务帮助页类似。
Web HTTP 错误处理:允许 Web HTTP 服务以与操作相同的格式返回错误信息。
Web HTTP 跨域 JavaScript 支持:允许使用 JSON Padding (JSONP)。
简化配置:减少了服务所需的配置量
有关更多信息,请参见 What's New in Windows Communication Foundation。
返回页首
Windows Workflow Foundation
Windows Workflow Foundation (WF) 提供以下方面的改进:
改进的工作流活动模型:Activity 类提供工作流行为的基本抽象。
各种复合活动选项:工作流可从以传统的流控制结构为模型的新建流控制活动(如 Flowchart、TryCatch 和 Switch<T>)受益。
扩展的内置活动库:活动库的新增功能包括新的流控制活动、用于操作成员数据的活动以及用于控制事务的活动。
显式活动数据模型:用于存储或移动数据的新增选项包括变量和方向参数。
增强的宿主、持久性和跟踪选项:宿主增强包括更多的运行工作流选项,使用 Persist 活动的显式保持,保持而不进行卸载,使用非持久区域阻止保持,使用宿主中的环境事务,将跟踪信息记录到事件日志,以及使用 Bookmark 对象继续挂起的工作流。
更简单的 WF 设计器扩展功能:新的 WF 设计器是基于 Windows Presentation Foundation (WPF) 构建的,提供了一个可在 Visual Studio 外部重新承载 WF 设计器时使用的更简单的模型。
有关更多信息,请参见 What's New in Windows Workflow Foundation。
返回页首
请参见
概念
ASP.NET 4 和 Visual Web Developer 中的新增功能
其他资源
What's New in Windows Communication Foundation