.NET有大变化了,振奋人心的时刻,新特性讲解!!
.NET有大变化了,振奋人心的时刻,新特性讲解!!

在微软北美技术大会(TechEd North America),微软宣布下一代.NET的技术创新点。这其中最重要的就是ASP.NET vNext。微软也一直在对.NET的核心技术进行优化,尤其是在上个月举行的Build2014大会上发布的.NET Native预编译器和.NET Next Generation JIT (代号RyuJIT)。

同时,微软也宣布成立.NET基金会,而下一代ASP.NET也将实现全部开源。而.NET Compiler Platform ("Roslyn")项目也成为一个托管在Codeplex上的开源项目,它包括一个全新的C#和VB的编译器以及一些将要添加到C# 6中的新特性。

目前,.NET大约有18亿有效安装量。无论从哪方面来说,这都是一个非常大的数字,同时这也为你的程序提供了一个广阔的运行平台。

.NET的2014新特性
.NET的2014新特性

TechEd中.NET的公告:

下面是我们在TechEd中分享的一些关于.NET的公告。

1、.NET vNext

.NET vNext作为.NET Framework的下一个重要的发布版本,第一次出现在TechEd大会上。微软在TechEd和Build2014大会上分享了下一个发布版本中的多个新特性和组件。开发者可以使用Roslyn compilers来编译C#6和VB,将ASP.NET vNext程序部署在服务器或者云端,使用.NET Native预编译器来编译Windows应用商店中的APP程序,并且可以享受由下一代JIT带来的更快的服务端或桌面程序。

针对现在比较常见的服务端优先和移动端优先的开发需求,微软对.NET做了专门的优化。用户对移动端和云端APP有更高的性能需求,并且这些程序都运行在专门的硬件或虚拟环境下。微软也Windows Store应用商店中的程序提供了.NET Native预编译器,为云端程序开发了一个云端优化模式。

.NET vNext有一个专门为云端环境优化过的模式,该模式允许你在部署程序的时候连同他们所用到的.NET Framework的相关库一同部署(译者注:没有用到的库不会添加到里面)。

由于.NET的运行时和框架中的库部署在了程序基础(app-basis)上。所以在同台机器上,每一个程序可以运行不同版本的.NET vNext,并且可以单独升级,互不影响。这些库已经被显著的优化、精简以便减少框架占用的空间,并且将会使用NuGet来发布。在这种模式下,和WPF以及Window Forms相关的一些库已经被移除了。

微软也始终以跨平台的思想来开发这个模式,在开发过程中我们和Xamarin积极合作,以确保经过云端优化过的.NET程序可以运行在装有Mono运行时的Mac和Linux上。.NET和ASP.NET的巨大生产力可以提供给那些使用混合开发环境的团队。

2、ASP.NET vNext

ASP.NET vNext是微软在TechEd大会上的一个重大发布。下一代将更新ASP.NET的诸多方面,使ASP.NET的程序更容易构建并且在性能方面表现的更好。对于这些网站和服务,微软也分别考虑了访问量少的情况和访问量超多的情况,例如一些关键性的设计原则,如下所示:

• 为云环境量身打造

• 对网站和服务使用单一的编程模型

• 低延时的开发者体验

• 提供高性能、高效的API和模式——使得他们既可以单独使用,又可以在一个应用中组合使用

• 可通过命令行工具和标准格式的文件进行细粒度控制

• 使用NuGet交付

• 通过.NET Foundation开源发布

• 可以运行在Mono,Mac和Linux上

ASP.NET vNext包括MVC,Web API,Web Pages,SignalR以及EF的更新版本。对这些框架所做的主要改进在于MVC, Web API和Web Pages已经被合并成了单一的编程模型。例如,现在控制器和路由的概念已经统一在了一起。对于同一个HTTP请求,开发者现在可以使用一个控制器来返回MVC视图和格式化过的Web API响应。

ASP.NET vNext程序是为云环境设计的。像会话状态和缓存这些服务,会根据程序的运行环境(云环境或普通的主机环境)来调整它们的行为,但是他们是以统一的API提供给开发者的。微软在底层使用了依赖注入的方法来让你的程序去适应不同的环境。由于修改了底层实现的代码,所以开发者可以在不修改代码的情况下很容易的将你的程序从内部部署移植到云环境中。

当开发者修改了Web应用程序的代码之后,不用再去执行编译的步骤,直接刷新浏览器页面就能查看到修改后的效果。这项对提升生产力很有意义的改进得益于我们对底层CLR加载时间的优化以及新的.NET编译器平台("Roslyn")。

例如下面第一张图展示了一个托管在命令行中的ASP.NET vNext示例程序,你可以在浏览器中浏览。在Visual Studio中做的任何修改都会被自动编译,并且在下一次刷新浏览器的时候执行。该程序使用的就是.NET vNext的云端优化过的模式。

.NET的2014新特性
.NET的2014新特性

你也可以像之前使用Visual Studio那样,按F5键,Visual Studio会自动打开一个web服务器和浏览器窗口。下面这张图就使用的这种方法,但它的代码和上面的一样。

.NET的2014新特性
.NET的2014新特性

下面这张图中的程序已经为.NET vNext框架重新配置过,并没有使用云端优化过的模式。你只需要设置一下项目的属性,这个程序就可以使用.NET框架提供的所有的API了。同样,你只需要刷新一下浏览器就可以看到配置后的结果了。

.NET的2014新特性
.NET的2014新特性

下面这个表格列出了一些我们已经构建了的场景以及这些场景可以使用的地方:

.NET的2014新特性
.NET的2014新特性

ASP.NET vNext将会以开源的形式贡献给.NET基金会(.NET Foundation),以后,所有和ASP.NET vNext相关的东西将会通过NuGet发布,保持开源。

3、.NET Framework其他的一些升级和改进

最近,微软发布了.NET Framework 4.5.2。这包括对ASP.NET,Windows Form以及其他一些产品的做的显著改进。你现在可以在你的代码中使用4.5.2中的一些新特性了。

同时,微软也给给.NET Native和Next Generation JIT添加了新的功能和使用场景。.NET Native现在除了支持ARM和x64的程序之外,还支持32位的程序。Next Generation JIT现在支持Windows 7及以上的x64应用程序。这些技术都是.NET vNext发展道路上的关键部分。

• 下载.NET Native Developer Preview 2

• 下载Next Generation JIT (“RyuJit”) CTP 4

4、针对多个平台

为了使程序和库的代码可以更容易的运行在多个平台上,微软已经花了多年的时间在这上面。一开始使Xamarin可以使用PCL程序集,Xamarin随之也作出了改变,并将这件事向前推动了一大步。

最近一段时间,微软一直与Xamarin紧密合作,使.NET NuGet包可以更好和Xamarin的工具协作,以便可以更容易的把.NET程序运行在iOS和Android上。

在TechEd,微软发布了一个新的可移植的统计分析工具——ApiPort,提供了两项主要的数据:你代码可以运行的平台以及阻止你代码运行在其他平台上的相关依赖。

命令行工具为程序可移植性的统计分析结果生成了一个Excel格式的报告,该报告提供了两种视图方便你的查看。它为指定的平台提供了一个高级的、以颜色区分开来的视图,同时它还提供了一个详细的列表,列出了你的代码中所有类型的成员在各平台中的支持情况。考虑到报告是一个Excel文件,你可以很容易的过滤这个列表,构建数据透视表以及做进一步的分析。

下面的图片展示了可移植性分析结果的高级视图。只显示了一个程序集,但实际上是有多个的。你可以下载可移植性分析样例来看一下它的原始数据。

.NET的2014新特性
.NET的2014新特性

该工具还有另一个功能,所有和依赖相关的数据(不包括程序集)会被上传到一个由.NET团队维护的Azure服务上。该工具上传的数据只是你代码所依赖的程序集和API的列表。我们不会记录数据的来源和使用者的信息,也不会上传你的代码和二进制文件。我们只是想要知道我们还需要为不同的平台提供些什么功能,以便使代码可以更容易的跨平台。

如果你发现很难转换至一个特定的平台,请投票选出你想要为运行你的app和libraries的特定平台上的工具集所附加的APIs。在整个目录运行工具集是一件很容易的事。

首次释出的版本可能缺乏一些特性,目前我们正努力为它添加支持。Xamarin/Mono平台目前还缺乏一些工具集。还没有考虑引入NuGet packages,它可以使其它平台同样可以利用.NET Framework APIs,可以把它们统计为缺失的APIs。

5、用于Microsoft Service的Client Libraries

你很可能已经听说过Microsoft是一个“services first”和“devices first”的公司。这之间的关联便是client libraries,它使得apps访问Microsoft services变得很容易。尽管用于Microsoft Service的Client Libraries并非最新的概念,但微软目前努力为它提供多平台支持。

在TechEd在,微软发布了一个用于Office 365、.NET和JavaScript的预览版的client libraries。你可以在Office Developer Blog上阅读最新的Office 365 client libraries授权声明。.NET Client libraries支持WPF、Windows Forms、Windows Store、Xamarin.iOS、Xamarin.Android和ASP.NET apps以及Portable Class Libraries,通过NuGet传递消息。

• Microsoft Office 365 Mail, Calendar and Contacts Library for .NET(.NET用于Microsoft Office 365的邮件、日历和联系人库)

• Microsoft Office 365 My Files Library for .NET(.NET用于Microsoft Office 365的我的文件库)

• Microsoft Office 365 Users and Groups Library for .NET(.NET用于Microsoft Office 365的用户和用户组库)

• Microsoft Office 365 Authentication Library for .NET (Windows Store, Windows Desktop)(.NET用于Microsoft Office 365的身份验证库(Windows商店、Windows桌面))

• Microsoft Office 365 Authentication Library for ASP.NET(ASP.NET用于Microsoft Office 365的身份验证库)

• Microsoft Office 365 Authentication Library for .NET (Android and iOS)(.NET用于Microsoft Office 365的身份验证库(Android和iOS))

微软也提供了用Visual Studio增加libraries到你的apps中的集成体验。这些服务需要apps注册,权限选择和一个特殊平台用户验证过程。你也需要增加下正确的client libraries至你的apps。Visual Studio会管理好你的一切数据,作为联系人服务管理的一部分,如下所示。

.NET的2014新特性
.NET的2014新特性

总结

在.NET团队,微软非常乐意分享下一代的.NET技术,其组合了一些重要的技术、特性和应用场景,这些将成为.NET vNext的一部分,而微软下一步的主要目标释出.NET Framework的源码。