Visual Studio 11. NET 的改善

[原文发表地址]   Visual Studio 11 .NET Advances

[原文发表时间] 2011-10-26 15:00

在我的Visual Studio 11系列第一篇博客中,我讨论了一些在Visual Studio 11开发者预览版中语言层面的创新。在这第二篇博文中,我会关注一些.NET Framework 4.5开发者预览版中的改进。

语言能让开发者向程序传达他们想做的行为。但是,为了尽可能提高效率,开发者们常常依赖于运行时和库来封装常用功能。我们的团队致力于打造全新的.NET 4.5,让开发者在提高效率的同时,能够用托管代码创造出丰富,可靠优质的软件。我今天的目的不是一一详细介绍其中包含的新功能(要做到这点可能要写一本书的长度),也不想覆盖到Framework所有改进的方面。我只想简单地强调一些我认为具有代表性的内容。想要了解更多.NET 4.5中最新的内容,我推荐你们看下//BUILD/上Joshua Goodman的演讲,以及与这个主题相关的MSDN 文档

性能

对.NET Framework 4.5来说,在性能改进上下了很多功夫,无论是在改进现有代码性能方面,还是在编写代码方面都更快速,更灵活,可扩展性更强,

公共语言运行库(CLR)团队十分关注改善运行库环境本身的性能。有了像背景服务器垃圾收集器,多核背景JIT编译和优化配置的导论后,托管应用程序(尤其是服务器上的)现在可以更快速启动,拥有更高性能,运行更流畅,延迟也减少了。

性能改进超越了运行库执行环境,例如Framework内的核心组件被内部重写,以在主要场景中提供改进的性能。比如.NET中的Stream类存在于大多数I/O相关操作的中心位置,用Stream来异步读写是很常见的,而现在这些操作在.NET 4.5中就少了许多。另一个实例就是,WPF中的项目控件在处理某类数据时也更快了。

在这个发布中,这项Stream工作就是我们非常关注异步的一部分。正如我在前一篇有关语言的博文中提到的,C#和Visual Basic在编写异步代码时,扩展了对一流语言的支持。这个支持并不局限于语言,并加入了.NET Framework的库。全新的基于任务的API也被添加进Framework,包括贯穿于网络和网页服务堆中的BCL类型,同时也添加到了System.Xml和System.Data库中,以及更多。

了解更多信息,推荐你们观看//BUILD/中的以下演讲:

网络

如今很少能看到独立应用程序,就是那种不用某种方式进行交流的应用程序。.NET一直以来有着丰富的高质量网络编程库,无论是对低级的基于套接字的编程还是高级的通过网络服务进行的通信都很有用。.NET 4.5对开发越来越多的互相关连的应用程序提供根本的支持。虽然在.NET 4.5中有很多有趣的与网络相关的改进,在这里我只想特别介绍三个最具代表性的。

WebSocket是一个全新的双向通信协议,它支持客户端与服务器间低延迟通信。这对执行交互式的应用程序来说很棒,比如在线游戏,它会受益于服务器和客户端的“推动”,而且.NET 4.5还包括在ASP.NET和在WCF中对WebSockets的支持。.NET 这次的发布还出现了全新的HttpClient类,它能让客户端和服务器更简单有效地使用现有网络API。

另一个我想说的改进就是任务和WCF的整合。有了先前提及的语言支持,跨越Framework的异步API通过任务就公开了。除了这些.NET中包含的API,还有通过Visual Studio生成的API。由Add Service Reference…对话框创建的WCF网络服务终端是这类API的一个重要部分。在先前的发布中,这个工具默认只在同步操作时生成,你可以使用高级配置对话框来选择公开异步操作。现在,在Visual Studio 11开发者预览版本中,默认情况下工具不仅仅生成异步操作,它还会使用基于任务的异步模式。

clip_image001

这就意味着所有你添加服务引用的网络服务会即时支持在等待异步方法。以下是使用其中一个生成的代理来做异步调用,来搜索Bing的例子:

clip_image002

了解更多有关.NET 4.5网络改进的信息,我推荐你们看看//BUILD/上的这些演讲:

互操作性

Framework本身只包含你的应用程序所使用的库集之一,如果没有这个概念,那么来看.NET Framework的改进就是不完整的。除了你所依赖的.NET Framework中的所有库,你还可以使用自己创建的,或者第三方创建的库。一直以来,很多在你的应用程序中使用的库只是在Windows公开的操作系统功能顶部的一层简单封装,例如访问文件系统,访问音频和视频硬件等等。自从.NET第一次的发布以来,CLR就提供了互操作的功能,但只是实验性阶段。

有了.NET 4.5和Windows Runtime(WinRT)的到来,需要创建这样的互操作包装就成了历史。通过CLR的改进,你的.NET应用程序可以为那些组件引用metadata文件,CLR会照管需要的互操作详情,让你能像使用.NET库中的组件一样使用它们。这对开发者来说是个天大的喜讯。

了解更多有关.NET 4.5中互操作性改善的信息,我推荐你看看//BUILD/上的这些演讲:

还有很多我在这篇博文中省略的功能。BCL,托管扩展型Framework(MEF),System.Xml, System.Net,WPFADO.NETASP.NETWCFWindows Workflow Foundation并行计算等等。它们在此次发布中都被广泛关注,我鼓励你们自己做一番探索,了解更多团队开发的内容。

万福!