赚钱快金融理财可信吗:.NET 4开发框架中的内核新功能及改进 - 新闻中心 - 赛迪网

来源:百度文库 编辑:九乡新闻网 时间:2024/04/20 00:38:22

(一)诊断和性能

早期版本的.NET框架并没有提供一种方法来确定一个特定的应用程序域是否正在影响其他应用程序域,因为操作系统的API及相关工具(如Windows任务管理器)都被精确设计到进程级。从.NET框架4开始,你可以在每一个应用程序域中获取处理器及内存的使用估测信息。

您可以监控每一个应用程序域的CPU和内存使用情况。可以通过托管和本机宿主API以及Windows事件跟踪(ETW)来进行应用程序域资源的监控。当启用此功能后,它能够在进程的整个生命周期过程中收集所有应用程序域的统计信息。有关此主题,你也可以参考新属性AppDomain.MonitoringIsEnabled的介绍。

现在,您可以为了诊断目的而访问ETW事件以提高性能。

最后,System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute属性能够支持在托管代码中处理显示崩溃的进程状态的异常。

(二)垃圾收集

.NET框架4支持后台垃圾收集。此功能取代了以前版本中的并行垃圾收集,从而提供更好的系统性能。有关该内容的更多的信息,请参阅文章《垃圾收集基础》。

(三)代码契约

代码契约功能允许你指定那些仅通过方法或类型的签名尚不能描述的契约信息。新命名空间 System.Diagnostics.Contracts中包含的类提供了一种独立于语言的方法并使用前置条件、后置条件和对象不变量等形式来表达编码假设。这些契约通过运行时检查能够改进测试,支持静态契约校验,并支持文档生成。

(四)仅使用设计时互操作程序集

如今,你不再需要携带主互操作程序集(PIA)来部署与COM对象互操作的应用程序。在.NET框架4中,编译器可以从互操作程序集中嵌入类型信息,而且能够仅选择那些应用程序(例如,一个插件)实际使用的类型。类型安全由公共语言运行时来保障。

(五)动态语言运行时

动态语言运行时(DLR)是一个新的运行时环境,它把一组针对动态语言的服务添加到CLR中。DLR使开发运行于.NET框架上的动态语言更加容易,而且有利于把动态特性添加到静态类型的语言中。为了支持DLR,.NET框架中添加了一个新的命名空间System.Dynamic。

通过引入新的描述控制流的类型,例如System.Linq.Expressions.LoopExpression和 System.Linq.Expressions.TryExpression,表达式树功能被进一步扩展。注意,这些新的类型仅为动态语言运行时 (DLR)所使用,而不能够由LINQ使用。

此外,还有一些支持.NET框架基础设施的新类被添加到System.Runtime.CompilerServices命名空间中。

(六)协变与反变

有几种泛型接口和委托现在支持协变与反变功能。

(七)BigInteger和复数

新的System.Numerics.BigInteger结构是一个任意精度的整数数据类型,它支持所有标准的整数运算,其中包括位操作。 BigInteger可以用于任何.NET框架语言中。此外,一些新的.NET框架语言(如F#和IronPython)都已内置了对此结构的支持。

新的System.Numerics.Complex结构用于描述一个复数,而且支持复数的算术运算和三角运算。

(八)元组

.NET框架4引入了System.Tuple类,用于创建包含结构化数据的元组对象。另外,还提供了泛型元组类以便支持具有1至8个组件的元组。为了支持有9个或更多组件的元组对象,提供了一个泛型元组类,此类使用7个类型参数,而第8个参数可以是任何的元组类型。

(九)文件系统枚举功能方面的改进

.NET框架4又增加了新的文件枚举方法,从而进一步提高访问巨型文件目录或遍历大文件的应用程序的性能。

(十)内存映射文件

.NET框架现在支持内存映射文件。你可以使用内存映射文件来编辑非常大的文件,还可以为进程间通信创建共享内存。

(十一)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集合中的成员。

String.Concat方法能够使让您串连一个可枚举集合中的每一个元素,而不必预先把这些元素转换为字符串。

又增加了两个新的更方便的方法:StringBuilder.Clear和Stopwatch.Restart。

新的Enum.HasFlag方法可以确定是设置一个枚举值中的一位还是多位域(标志)。Enum.TryParse方法返回一个布尔值,用于指示是否成功地解析了一个字符串或整数。

System.Environment.SpecialFolder枚举中包含了几个新的文件夹。

现在,您可以使用从System.IO.Stream类继承的类中的CopyTo方法轻松地把一个流复制到另一个流中。

新的重载的Path.Combine方法能够使您合并多个文件路径。

新的System.IObservable<(Of <(T>)>)和System.IObserver<(Of <(T>)>)接口提供了一种更一般化的机制用于基于推技术的通知。

System.IntPtr和System.UIntPtr类现在包括了对加法和减法运算符的支持。

现在,您可以通过把类型包装在一个System.Lazy<(Of <(T>类中来实现对任何自定义类型的新的System.Collections.Generic.SortedSet类提供了一棵自我平衡树,它能够在插入、删除和搜索数据后维护数据的排列顺序。这个类实现了新的System.Collections.Generic.ISet接口。

针对System.IO.Compression.DeflateStream和System.IO.Compression.GZipStream类的压缩算法得到进一步的改进,以便使已压缩的数据不再膨胀。此外,还取消了对压缩流的4G大小的限制。

新的重载的Monitor.Enter(Object, Boolean)方法中可以使用一个布尔类型的引用,只有当监视器成功地进入时此变量才被自动设置为true。

您可以使用Thread.Yield方法让调用线程把当前执行上下文让给另一个已准备好在当前处理器上运行的线程。

System.Guid结构现在包含了TryParse和TryParseExact方法。

新的Microsoft.Win32.RegistryOptions枚举可以让你指定一个不稳定的注册表项,此项在计算机重新启动后便不再存在。

注册表项不再限制为255个字符的最大长度