一起谈.NET技术,.NET 4九大新特性 FrameWork达到新境界

  本文将向您介绍.NET框架4中的主要功能和改进特征。请注意,本文中并没有提供有关这些新功能的综合信息,并随时可能更改。

  请注意,.NET框架4引入了一个改进的安全模式。有关该内容的更多的信息,请参阅文章《.NET框架4中的安全变化》。

  具体来说,本文中将介绍.NET框架4的如下一些新功能和改进特征:

  应用程序兼容性和部署

  内核新功能及改进

  托管扩展框架

  并行计算

  网络编程

  Web开发

  客户端开发

  数据

  通信和工作流

  一、应用程序兼容性和部署

  除了一些在安全、标准遵从、正确性、可靠性及性能等方面的改进之外,.NET框架4与基于早期.NET框架版本构建的应用程序高度兼容。

  .NET框架4并不会自动使用当前版本的公共语言运行库来运行使用早期版本的.NET框架构建的应用程序。为了在.NET框架4下运行以前的应用程序,你必须使用在您的Visual Studio项目的属性中指定的目标.NET框架版本重新编译您的应用程序,或者在应用程序的配置文件中使用元素来指定支持的运行时刻库。

  如果安装.NET框架4后您的应用程序或组件无法工作,请在微软联系网站提交一份错误报告。您可以如在《.NET框架4应用程序兼容性》中所描述的那样进行兼容性测试,并参考文章《演练:Visual Studio 2010和.NET框架4》来了解有关新的功能。有关其他信息及已知的迁移问题,可以访问博客《.NET框架兼容性》。

  以下各小节将描述应用部署方面的改善。

  (一)客户配置

  .NET框架4的客户配置支持比以前的版本更多的平台,并为您的Windows Presentation Foundation(WPF)、控制台或Windows窗体应用程序提供快速的部署体验。有关该内容的更多的信息,请参阅文章《.NET框架客户端配置》。

  (二)进程内并行执行

  此功能能够使应用程序在同一进程中加载和启动.NET框架的多个版本。例如,您可以在同一进程中运行加载插件(或组件)的应用程序,程序本身基于.NET框架 2.0 SP1而插件基于.NET框架4。更早一些的组件将继续使用早的.NET框架版本,而新的组件使用新的.NET框架版本。有关该内容的更多的信息,请参考文章《进程内并行执行》。

  二、内核新功能及改进

  以下各小节将描述公共语言运行时刻库和基础类库所提供的新功能和改进特征。

  (一)诊断和性能

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

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

  现在,您可以为了诊断目的而访问ETW事件以提高性能。有关该内容的更多的信息,请参阅文章《CLR ETW事件》和《控制.NET框架日志》,还可以参考文章《性能计数器和进程内并行应用》。

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

  (二)垃圾收集

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

  (三)代码契约

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

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

  如今,你不再需要携带主互操作程序集(PIA)来部署与COM对象互操作的应用程序。在.NET框架4中,编译器可以从互操作程序集中嵌入类型信息,而且能够仅选择那些应用程序(例如,一个插件)实际使用的类型。类型安全由公共语言运行时来保障。有关信息,请参阅文章《在托管代码中使用COM类型》和《演练:从微软Office程序集中嵌入类型信息(C#和Visual Basic)》。

  (五)动态语言运行时

  动态语言运行时(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个字符的最大长度。

  三、托管扩展框架

  托管扩展性框架(MEF)是.NET框架4中的一个新库,帮助您构建可扩展的和可组合式应用程序。MEF可以让您指定在一个应用程序中的扩展点,给其他扩展的应用程序提供服务,以及创建可扩展应用程序所使用的部件等。MEF还支持很容易地基于元数据搜索到可用的部件,而无需为这些部件加载相应的程序集。有关该内容的更多的信息,请参阅《托管可扩展框架》。有关MEF类型的列表,你可以参阅System.ComponentModel.Composition命名空间。

  四、并行计算

  .NET框架 4针对编写多线程和异步代码引入了一个新的编程模式,从而极大地简化了应用程序和库开发者的编程。此新的模式可以使开发人员以一种自然的方式来编写高效的,良好粒度的,可扩展的并行代码,而不必直接使用线程或线程池等。新的System.Threading.Tasks命名空间和其他相关类型支持这种新模式。并行LINQ(PLINQ),作为LINQ to Objects的一种并行实现,能够通过声明性语法支持类似的功能。有关该内容的更多的信息,请参阅《.NET框架并行程序设计》。

  五、网络编程

  网络编程方面的改进包括以下内容:

  针对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中运行的应用程序可以使用扩展保护功能。有关该内容的更多的信息,请参阅《使用扩展保护集成Windows身份验证》。

  支持使用IPv6和Teredo进行网络地址转换(NAT)遍历。有关该内容的更多的信息,请参阅《使用IPv6和Teredo实现NAT遍历》。

  新的网络性能计数器能够提供有关HttpWebRequest对象的信息。有关该内容的更多的信息,请参阅《网络性能计数器》。

  在System.Net.HttpWebRequest类中,通过重载AddRange方法支持使用64位头部结构。在System.Net.HttpWebRequest类中定义的新的属性允许一个应用程序设置很多HTTP头部。您可以使用Host属性设置一个HTTP请求中的独立于请求URI的头部值。

  提供针对System.Net.Mail.SmtpClient和相关类的安全套接字层(SSL)支持。

  提供在System.Net.Mail.MailMessage类中的针对邮件头部的改进支持。

  支持在一个加密中使用空密码。您可以使用System.Net.ServicePointManager类和EncryptionPolicy属性来指定加密策略。System.Net.Security.SslStream类的构造函数现在使用一个System.Net.Security.EncryptionPolicy类作为参数。

  为基于密码的身份验证模式,如在System.Net.NetworkCredential类中定义的基本型(Basic),摘要式(Digest),NTLM和Kerberos身份验证等模式,提供证书支持。为了提高安全性,现在可以把密码视为System.Security.SecureString类的实现,而不是简单的System.String类的实例。

  现在,能够指定如何在System.URI和System.Net.HttpListener类中使用百分比编码值来转换和规范化一个URI。有关的详细信息,请参阅System.Net.Configuration.HttpListenerElement,System.Configuratio.SchemeSettingElement,

System.Configuration.SchemeSettingElementCollection和System.Configuration.UriSection等几个类。

  六、Web开发

  ASP.NET版本4在以下几个方面引入了一些新特点:

  核心服务,包括一个新的允许您扩展缓存的API,支持压缩会话状态数据和一个新的应用程序预加载管理器(自动启动功能)。

  Web窗体方面,其中包括为ASP.NET路由提供的更加集成化的支持,对Web标准的增强支持,更新的浏览器支持,为数据控件增加了一些新功能,以及为视图状态管理增加了一些新的功能。

  Web窗体控件方面,提供了一个新的图表控件。

  MVC框架方面,包括针对视图的新的辅助方法,对分区的MVC应用程序的支持,并提供了异步控制器。

  动态数据方面,包括针对现有Web应用程序的支持,全对多对多关系和继承的支持,对字段模板和属性的支持,以及增强的数据过滤功能。

  在Microsoft AJAX库中增加了针对客户端中心型Ajax应用程序的额外支持。

  Visual Web Developer中,包括了改进的针对JScript的智能感知支持,针对HTML和ASP.NET标记的新的自动完整代码片段支持,以及增强的CSS兼容性支持。

  部署方面,为自动化的典型的部署任务增加了新的支持工具。

  多目标方面,包括针对无法在.NET框架的目标版本中可用功能的更好的过滤支持。

  有关这些功能的更详细的信息,请参考《ASP.NET 4和Visual Web Developer新特征》。

  七、客户端开发

  Windows Presentation Foundation

  在.NET框架4中,Windows Presentation Foundation(WPF)在许多方面都发生了变化并进行了改进,包括控件、图形和XAML等等。有关该内容的更多的信息,请参考《WPF 4新特征概述》。

  八、数据

  (一)ADO.NET

  ADO.NET的实体框架中提供了新功能,包括持久化透明对象(Persistence-Ignorant Objects,译者注:这种对象具有不必事先在DBMS中建立实体信息就可以利用实体框架的DDL生成功能将POCO对象结构转换成实体信息结构以存入信息库中的能力。),在LINQ查询功能和自定义对象层代码生成等。有关该内容的更多的信息,请参阅《ADO.NET新特征》。

  (二)动态数据

  对于ASP.NET 4来说,动态数据支持得到进一步增强,从而给你以更强大的功能快速建立数据驱动的网站。这包括以下内容:

  基于在数据模型定义的约束的自动验证功能。

  通过使用已成为动态数据项目的一部分的字段模板,能够方便地改变在GridView和DetailsView控件中针对相应字段生成的标记。

  有关该内容的更多的信息,请参考《ASP.NET 4和Visual Web Developer新特征》。

  九、通信和工作流

  Windows通信基础(WCF)实现了消息管理方面的增强并提供与Windows工作流基础(WF)的无缝集成。WF提供的改进体现在性能、可扩展性、工作流建模以及一个更新的可视化设计器等方面。有关该内容的更多的信息,请参考《Windows通信基础新特征概述》和《Windows工作流基础新特征概述》。

时间: 2024-10-21 22:29:21

一起谈.NET技术,.NET 4九大新特性 FrameWork达到新境界的相关文章

Docker实践者不能错过2014 Container技术大会的九大理由!

摘要:2014年10月18日,CSDN&<程序员>主办的2014 Container技术大会将在北京召开,目前议题已经基本确定.为帮助更多同学进一步了解本次大会,主办方总结了技术团队不应错过2014 Container技术大会的九大理由. Container技术已经出现了十几年,但直到2013年Docker项目的出现,才逐渐火热起来,广为人知.如今,Docker拥有超过500个代码贡献者,20个核心Maintainer,超过8000个创建在GitHub上的Docker相关项目,30多个

价值1207亿的技术分享,你不能错过“2016双11技术创新”的九大理由!

双11的剁手党们.阿里的粉们以及广大的技术精英爱好者们,你们必须知道阿里又要"发车"了: 本次技术论坛是一场全面解读双11背后技术创新的饕餮盛宴,特别邀请了亲历2016年双11的8位阿里技术大V:从承载亿级用户大流量的网络自动化技术,到资源充分利用的超大规模Docker化:从支撑最大规模在线交易的实时和离线计算能力,到人工智能在搜索和推荐场景下的创新应用:从颠覆购物体验的VR互动,到背后千人千面的商铺个性化:从应对前端极限挑战的"秒开项目",到绚烂媒体大屏背后全面的

你不能错过“2016双11技术创新”的九大理由

双11的剁手党们.阿里的粉们以及广大的技术精英爱好者们,你们必须知道阿里又要"发车"了:  本次技术论坛是一场全面解读双11背后技术创新的饕餮盛宴,特别邀请了亲历2016年双11的8位阿里技术大V:从承载亿级用户大流量的网络自动化技术,到资源充分利用的超大规模Docker化:从支撑最大规模在线交易的实时和离线计算能力,到人工智能在搜索和推荐场景下的创新应用:从颠覆购物体验的VR互动,到背后千人千面的商铺个性化:从应对前端极限挑战的"秒开项目",到绚烂媒体大屏背后全面

CF毁灭都市九大怪物特性介绍 新怪物打法分享

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   [ 科技讯]8月7日消息,CF新版本来临,新地图毁灭都市神秘莫测,许多新玩法将会给玩家带来全新体验,为大家简单介绍新地图九大怪物特性及屠杀的 关键点.希望 对大家有所帮助.     挑战模式新型boss:上古巨蜥 "上古巨蜥"是Blitz从古代巨蜥中提取基因改造而成的终极怪兽,是生化武器的母体,从它的体内可以源源不断的孵化出各种生化怪物.由于

顽疾反复发作:大数据技术领域的九大痛点

尽管在Hadoop与NoSQL部署方面做足了准备,同样的问题仍然一次又一次反复出现.现在业界是时候尽快搞定这些麻烦事了. 有时候一艘巨轮的侧方出现了破洞,但业界却决定坐等船体下沉.并把希望寄托在销售救生艇身上. 也有些时候,这些问题似乎并没到要闹出人命的地步--类似我家里浴室的状况,只有往一边拧龙头才会出水.过一阵子我可能会找机会修理一下,但事实上这个问题已经存在了12年之久了. 而在面对大数据业务时,我可以列出九个长久以来一直令人头痛的问题,时至今日它们依然存在着并困扰着无数用户. 大数据痛点

一起谈.NET技术,NHibernate 3.0.0.Alpha1 发布及新特性介绍

发布 刚刚NHibernate的Leader--Fabio Maulo发布了NHibernate 3.0.0.Alpha1版本,这是NHibernate 3.0.0的第一个公开测试版本. 下载地址 你可以到这里下载NHibernate 3.0.0.Alpha1,基于.Net3.5平台,具体文件如下. NHibernate源码:NHibernate-3.0.0.Alpha1-src.zip NHibernate二进制文件:NHibernate-3.0.0.Alpha1-bin.zip 特性介绍 N

一起谈.NET技术,C#中的语言特性都是从何而来?

前几天推荐一个同事用"可选参数",推荐完了我还画蛇添足的说这是.Net 4中的新特性.但是事后才发现这个新特性是C# 4.0的语言特性,与.Net 4无关.其实也不只这一次,我平时也经常把语言.框架.运行时,有时甚至还有开发工具混为一谈.于是今天就总结一下C#中我感兴趣的几个语言特性是从何而来的. 1.可选参数 可选参数是C# 4.0中的新特性,其作用在于在调用者不提供参数值时给参数一个默认值,用起来是这样的: static void Main(string[] args){ Test

盘点 Oracle 11g 中新特性带来的10大性能影响

盘点 Oracle 11g 中新特性带来的10大性能影响 原创 2017-08-02 盖国强 数据和云 Oracle的任何一个新版本,总是会带来大量引人瞩目的新特性,但是往往在这些新特性引入之初,首先引起的是一些麻烦,因为对于新技术的不了解.因为对于旧环境的不适应,从Oracle产品到技术服务运维,总是要走过一个磨合的长期过程. 请注意:我们并不推荐大家盲目的关闭和摒弃Oracle的新特性,我们建议大家在遇到问题时,做出适合自己的调整. 就此盘点一下 Oracle 11g 中,那些新特性带来的新

一起谈.NET技术,.NET 4九大新特性

英文原文:What's New in the .NET Framework 4 本文将向您介绍.NET Framework 4中的主要功能和改进特征.请注意,本文中并没有提供有关这些新功能的综合信息,并随时可能更改. 请注意,.NET Framework 4引入了一个改进的安全模式.有关该内容的更多的信息,请参阅文章<.NET Framework 4中的安全变化>. 一.应用程序兼容性和部署 除了一些在安全.标准遵从.正确性.可靠性及性能等方面的改进之外,.NET Framework 4与基于