ASP.NET 5 Beta8发布及升级经验
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注。)
题记:ASP.NET 5 Beta8如期发布,这是一个重要的里程碑,因为这是ASP.NET 5的特性冻结版本,强烈建议之前迟疑没有使用ASP.NET 5于生产环境的同学可以开始尝试了。
这次作为功能冻结的版本,变化相对于Beta7还是有很多地方的。
最大的改变莫过于改变了IIS托管模型
之前托管方式是“脚踏两只船”,除了DNX宿主外,还存在一个名为“Helios”用于IIS的宿主。这种方式带来了开发、维护和测试的复杂度,还让程序执行的内部流程有所不同。现在只有一个DNX宿主,如果想跑在IIS中的话,需要借助于一个新的HttpPlatformHandler,把请求传递给ASP.NET 5的Kestrel服务器。
这个IIS的扩展如果是IISExpress的话,可以安装Beta8的Web Tools更新来获得,如果不是就需要单独安装。
另外,对于旧项目还需要在wwwroot中添加一个web.config【update2015-10-21】来配置httpPlatformHandler,在project.json文件中添加“Microsoft.AspNet.IISPlatformHandler”和“Microsoft.AspNet.Server.Kestrel”的包,然后在Startup.cs文件中的Configure方法中添加“app.UseIISPlatformHandler();”。web.config的【/update2015-10-21】具体内容可以看文末的链接或者用beta8新建一个项目来参考。
其次是本地化支持的功能。
使用app.UseRequestLocalization(options)启用本地化后,内置的语言判断提供器就会根据请求头、查询字符串或者cookie值来判断当前语言。而后就可以利用services.AddLocalization(options => options.ResourcesPath = "resources");来传递本地化字符串内容了。
当然MVC的本地化也得到了支持。
DNX Watch命令实现动态化开发。
虽然.NET是支持动态编译的,要实现如Ruby、Python那样动态化开发(即在生产环境修改或推送代码后,程序以最新版本运行)还是需要做一些额外工作(或者选用WebPages这样的框架)。现在在ASP.NET 5中提供了DNX Watch命令,可以监控项目中所有文件的变动,从而实现快速的开发工作流程:编辑代码、保存、然后刷新浏览器就可以看到更新)。
安装方式:dnu commands install Microsoft.Dnx.Watcher
执行方式:dnx-watch web
除了上面这些加强,更多的可以参阅beta8的发布公告和发布说明:
http://blogs.msdn.com/b/webdev/archive/2015/10/15/announcing-availability-of-asp-net-5-beta8.aspx
https://github.com/aspnet/Home/releases/tag/v1.0.0-beta8
从beta7升级beta8
当然,整个beta8也带来了一些破坏性改变,我结合我从beta7升级的经验简单介绍一下:
更多的改变记录可以看这里:https://github.com/aspnet/Announcements/issues?q=is%3Aopen+is%3Aissue+milestone%3A1.0.0-beta8
Beta8的Web Tools下载在:http://www.microsoft.com/en-us/download/details.aspx?id=49442