ASP.NET的夏天:紧紧跟随.NET Web开发

[原文发表地址] A Summer of ASP.NET: Catching up with .NET Web Developments

[原文发表时间] 2015-09-24

2015年的夏季来了又走了(至少在北半球是这样),就在这段时间已在网上发布了4个版本的ASP.NET。随着Visual Studio 2015在7月份的发布,我们的团队发布了ASP.NET 4.6,对于我们ASP.NET框架和工具来说,它是一个重大的更新。此外,为了使开发人员可以开始探索新的开发框架,ASP.NET 5 bata 5 也随着Visual Studio 2015 一并发布。从那时起ASP.NET 5的一些更新,以及对新的ASP.NET 网路挂钩工具的介绍,使我们有了更多新的特性和功能来探索。在这篇文章中,我们为web开发人员重点关注最新特性。

ASP.NET 4.6 – 更多的好技术

有了ASP.NET 4.6,使用Web 窗体, MVC, WebAPI, Windows 服务器以及Internet信息服务器的开发者可以在他们热衷的平台上使用最新的C#工具和编译器。除了支持C# 6和VB 14外,该发布版同时在兼容服务器上支持HTTP2。

异步绑定模型

在ASP.NET 4.6中,Web窗体开发人员可以编写异步运行方法并且在页面上返回Task对象的模型绑定方法,这种方法标有async=”true” 页面指令。当你把绑定模型按如下形式编写,在等待数据库调用时,将不再阻塞网络服务线程:

publicasyncTask<Models.Trip> GetTripFor([QueryString]string id)
{
    var tripId = Guid.Parse(id);
    returnawait dataContext.Trips.FirstOrDefaultAsync(t => t.Id == tripId);
}

这里的id将从查询字符串中的参数“id”获取,它被解析为Guid,然后传递到一个实体框架中来查询我们dataContext里的Trips集合。这里最突出的特点是在查询中使用await关键字,它允许当前执行的线程返回到ASP.NET线程池的同时也可以进行数据库中的操作。

.NET 编译器平台

新的语言特性对整个ASP.NET都适用,当你创建一个新的Web应用程序时便默认启用。对于一个从ASP.NET旧版本升级而来的工程中,如果你想把这些语言特性添加进去,只需要在Visual Studio包管理控制台中按照如下命令安装编译器平台的NuGet包即可:

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

工具的改进

我们同时带来了对新的web开发技术的支持以及针对Visual Studio的工具。从2015开始,JSON 编辑器支持JSON模式验证以及提供基于已知模式的智能处理。

JSON Schema Validation

JSON编辑器同时也支持SchemaStore.org – 一个有用的JSON架构文件的开源集合。任何与schemastore.org 有关的JSON文件将支持智能提示和验证功能。

对于bower和npm配置文件已提供这种支持。这将为你显示你所期望的智能提示,并且输入包名时为你显示包信息。

                                     IntelliSense for bower and npm files

HTML编辑器也有很大程度的改进。这种编辑器现在对普通双花括号语法{{…}}具备更好的解析。它确保了内层内容不会按HTML处理并且被编辑器标记为不可用。Angular, Mustache, Handlebars以及其他使用双括号模板编程语言的开发者将会受益于此。这种编辑器现在也支持Angular指令和属性。当你开始输入ng- 属性名称时,你将会看到图标和有用的提示:

                                      IntelliSense for Angular.js

Bootstrap CSS框架具备相似的处理方式,通过一个特殊图标来表示引导框架的各种类及性能,使他们在逻辑上与其它创建的类分割开:

                                      IntelliSense for Bootstrap CSS

JavaScript编辑器同样具有类似的改进,也支持AngularJS, ReachJS和新的JavaScript语言特性。可以在编辑器中尝试新的代码导航栏来辅助遍历大型JavaScript文件。如果你要处理复杂的JavaScript脚本,你也许想添加一些JSDoc的注释来描述脚本特征,就像在C# 和VB代码中一样。在编写JSDoc标记时,JavaScript编辑器现在可以实现智能提示,并且在编辑器中以智能弹出窗口显示这一内容。

                                         IntelliSense hints for JSDoc markup

更多有关ASP.NET 4.6的工具及特性可以在我们发布在Web开发博客的博客公告中找到。

ASP.NET 5 测试版

ASP.ENT 5是下一代web开发平台的名称,团队目前工作在这一平台上。除了继续支持ASP.NET MVC和WebAPI开发功能外,这个开源平台也承诺提供跨平台开发和部署功能。ASP.NET 5工程可在Windows, Mac或者Linux操作系统上开发,编译及部署。

ASP.NET 5团队每月都发布有关框架和工具的测试版本, 并且拥有一个用来跟踪实现最终发布版的发布路线图。通过整个夏天发布的三个测试版,在使用ASP.NET进行Web开发方面已经有了显著的改进。

ASP.NET 5 beta 5与Visual Studio 2015一同发布并且附带支持使用ASP.NET MVC新版本进行开发的初始化功能,这些新版本的ASP.NET MVC是由ASP.NET Web API合并成为ASP.NET MVC 6。它通过使用开源Mono运行时来支持在Mac和Linux系统上开发web应用程序。其它特征包括:

  • C# 6支持Razor标记语言
  • 支持JSON试图序列化的新的JSON 帮助文件
  • ·新的辅助标记例如ImageTagHelper以及支持绑定dictionary属性值

7月底发布的ASP.NET 5 beta 6在框架方面带来了大量不间断的改变来提升用户与ASP.NET之间的交互体验。此外,Web程序还引进了SQL Server分布式缓存技术以及对引用程序集的强命名支持。MVC和WebAPI包也进行了重构来使他们可以独自运作,开发者可直接获取他们需要的框架部分而不用继承整个MVC框架。

ASP.NET 5 beta 7在9月初便可在www.asp.net/vnext下载使用。这些下载文件对ASP.NET框架(dnvm, dnx)和Visual Studio 里的web开发工具都进行了更新。对ASP.NET来说这是一个具有重大意义的发布版,对于Mac和Linux,它象征了第一个公开预览版的本地化.NET核心框架。当运行这些.NET核心版本的ASP.NET时,不再需要Mono框架。

ASP.NET 5 beta 7一些额外增强功能包括:

  • dnx命令不再需要在命令行中指定目录。你可以在当前工程路径下简单的执行dnx web来执行web命令。
  • dnu恢复输出进行了改进,可以报告nuget.config文件和订阅用于检索包。
  • 不兼容的包依赖关系报告更为良好并且在Visual Studio 2015的错误列表中显示更为整洁。
  • Dnx命令行支持一种新的 –framework switch命来来指定使用那个.NET框架。
  • 在Windows上运行完整的.NET框架时,支持app.config文件。
  • 现在,当执行dnvm时,您可以指定操作系统应该安装哪个dnx。这将允许你在Windows上安装Linux的dnx,然后从Windows系统中将 app部署到Linux上。
  • 单元测试模板可从sideWaffleYeoman ASP.NET 生成器获取。

Kestrel网络服务器已经在突飞猛进的提高。在beta 7发布版中,我们做出一对性能改进,当没有指定内容长度时允许分块响应以及在网络写入时允许后台写入缓存。我们决定把Kestrel作为支持的主机,近期在ASP.NET社区里将会讨论这一问题:https://youtu.be/tQC7P6n3pqk 

ASP.NET 5 beta 7的工具已有改进,这些改进可显著提高web开发者开发效率。我们重构了包搜索分析器,现在只需执行Ctrl+. 热键即可添加你可能引用的框架包

Refactored package analyzer

现在当你从Visual Studio启动一个工程时,我们在默认情况下启动调试记录以便所有的Debug信息和更高级别信息可以输出在控制台中。最后,我们在TagHelpers里添加了智能支持,这样你可以了解到如何更好的在Razor标记中利用这些扩展。

IntelliSense for TagHelpers in Razor markup

有关ASP.NET 5 beta 7发布版里的这些重要的新特性的完整介绍可以参考发布博客文章

ASP.NET网络挂钩

九月份推出的有关ASP.NET 4.6一个激动人心的新扩展是ASP.NET网络挂钩。有了这个新框架,你可以集成互联网服务来发送或接收网络钩。这些网络挂钩是一些小消息,当服务上的订阅事件被触发时会在服务间会被发送这些小消息。

有关如何在网络服务间配置接收和发送网络挂钩集成信息,我们已有一系列广泛发布的博客。具体可查看网络开发博客

ASP.NET 社区

ASP.NET的领导团队每周都播放会议,来讨论有关网络系统开发架构最新的特性及变更。他们会进行一些答疑以及接受社区的一些建议,因此这是你的一个机会,在这里你可以给构建下一代.NET网络开发工具团队提出建议。可以在https://live.asp.net跟随他们的播放以及回顾已经完成的视频会议。

               ASP.NET Community Standup

总结

作为一个工作在微软应用开发平台上的web开发者来说这是一个激动人心的时刻。随着新的ASP.NET框架的广大发展,ASP.NET 4.6提供可随时投入生产的新编译器新特性,以及像WebHooks这种新的创新型框架,有许多可供学习及使用的内容待我们研究。想了解更多最新的网络平台框架内容和工具,可访问www.asp.netblogs.msdn.com/webdev