近期微软发布了ASP.NET 5.0,本次发布的新特性需求源于大量用户的反馈和需求,例如灵活的跨平台运行时和自主部署能力使ASP.NET应用再也不受限于IIS、Cloud-ready环境配置下降了云端部署的门槛,另外源码开放无疑也是一个重量级惊喜。这些更改会有助于建立易于开发、部署、维护和现代的Web应用程序。相信看到以上几点做为.NET程序员的你已经火烧眉毛体验ASP.NET 5 的新功能了,下面咱们就来看下这些新特性。程序员
ASP.NET 5 是用于建立Web应用的框架,相对于之前的版本它更加简练、灵活,本次发布的版本完全优化了应用开发框架,你能够轻松部署应用到云端或其余平台,它包含了最小的模块化组件,因此确保你在构建复杂解决方案的同时保持灵活性。编程
ASP.NET 5 包含如下特性:json
·灵活的跨平台运行时浏览器
·新的HTTP模块请求管道框架
·Cloud-ready环境配置asp.net
·统一了包含 MVC、 Web API 和 Web 页面的编程模型异步
·无需从新编译便可查看更改效果编辑器
·并行的.NET Framework 版本ide
·自主部署或IIS部署能力模块化
·内嵌于Visual Studio 2015中的新工具
·GitHub开放源码
使用旧版本开发的应用程序不须要作任何修改,便可直接在 ASP.NET 5上运行。然而,如需使用ASP.NET 5 新功能,你须要将现有代码移植到新的框架。ASP.NET 5 和早期 ASP.NET 版本基本相同,所以你只须要把精力集中到新功能开发上,节省了你的代码迁移时间。
以上归纳性的介绍了ASP.NET 5的新特性和加强功能。
为何从新设计 ASP.NET ?
灵活的跨平台运行时需求
灵活的部署环境
多Framework版本并行使用
简化依赖关系管理
合并MVC、 Web API 和 Web 页
加强HTTP性能
Cloud-ready 部署能力
集成依赖注入
开源
提供敏捷的开发环境
关于Web Forms
早期版本Framework开发应用兼容性
灵活的跨平台运行时需求
早期 .NET Framework 版本一直做为单一且全面的总体进行安装,每一个新版本都包含了新功能和几乎全部早期功能,而鲜有删减,这就不可避免的形成Framework的体积的增加。这种模式确保了安装了新版 Framework的Windows系统能够兼容全部早期版本的.NET 应用,可是也意味着每一个应用都将运行在一个庞大冗余的框架上,即便不少功能在实际项目中没有使用。
相信每位.NET程序员都遇到过如下尴尬的决策场景:当收到Framework有更新发布时的通知时,是放弃使用新增功能保持应用的灵活性仍是使用新特性而忍痛让你的Framework更加庞大!
为了应对以上场景。ASP.NET 5提供了三种运行时,你能够根据实际须要灵活选择:
1. 全功能.NET CLR
全功能.NET CLR 是Visual Studio工程默认运行时状态。它提供全部 API,是保持应用向下兼容性最佳选择。
2. 核心CLR (cloud-optimized runtime)
核心 CLR 是精简的彻底模块化运行时。这个CLR已经被从新设计成组件便于你仅包含项目中实际使用的的.NET特性。组件做为NuGet 包添加。一旦完成引用,你的应用仅依赖于所需的功能。经过分解运行时为组件,咱们能够更快的更改每一个组件,由于每一个组件都有自我更新机制。核心CLR只有11M大小,相对于200M的全功能CLR无疑将使应用更加轻便。核心CLR能够伴随应用一块儿部署而且不一样的核心CLR能够并行运行。
3. 跨平台CLR
微软将发布针对于Linux 和 Mac OS X 发布跨平台运行时。这意味着你的.NET应用具有了在Mac 和Linux 设备上运行的能力。微软将和 Mono 社区合做完成这一新特性。在发布以前,你可使用Mono CLR用于跨平台开发。
新建 Visual Studio 工程默认使用全功能 .NET CLR,能够在工程属性页面更改成核心CLR。
ASP.NET 5 容许部署应用到 IIS,或脱离IIS进行独立部署,当设置目标 Framework 为Core CLR时,便可以使用部署包中的依赖项来部署应用。所以,你的应用自成一体,再不依赖于全功能的.NET 版本。该应用能够在任何设备和平台中运行应用。
这对.NET平台开发人员无疑又是个惊喜,部署应用不在局限于IIS,固然微软仍然推荐你使用IIS部署应用,可是若是须要在不兼容IIS的平台部署应用,你就可使用该新特性进行操做。
后续文章中咱们会发布如何建立不依赖于IIS 的MVC6应用,敬请期待。
多版本.NET并行使用
早期版本的.NET Framework,你将时刻面临是否更新版本的选择,一方面你但愿使用更新的功能,另外一方面你将为旧版本开发的工程是否能够平滑迁移到新版 .NET Framework 而感到纠结。
微软在 ASP.NET 5中改善了以上问题。在使用核心CLR前提下,你能够在部署包内定义依赖关系,因此你能够为每一个应用程序指定.NET版本。 旧版应用能够平滑运行,同时你也可使用新版本开发应用。所以在ASP.NET 5中多个版本的.NET应用是并行的。
ASP.NET 5 推出了一种全新的轻量级依赖关系管理机制。你再也不须要在应用中添加引用,而是使用引用NuGet 包代替。你能够经过NuGet Package 管理器添加NuGet包,或者你能够编辑包含NuGet包列表和版本信息 JSON 文件(project.json)来实现引用。project.json 文件用于列举应用使用的 NuGet 相关信息,如需添加其余引用,直接在该JSON文件中添加便可。
在 Visual Studio 2015中,根据智能提示能够快速的添加NuGet 包。
project.json 文件仅包含直接添加到工程中的 NuGet 包。若是添加引用文件外的包,这类依赖项将仅仅被加载,而不会显示到project.json 文件中。这种机制可使project.json 文件轻便易管理。
JSON格式文件使你能够在没有安装Visual Studio状况下,轻松管理引用。固然,可使用任何文本编辑器打开和编辑project.json。
早期版本中, MVC、Web API 和Web 页一直在使用着不一样的方式实现着相同的功能,能够说是异曲同工。例如, MVC 和Web API 都提供了路由,可是MVC routing 类在System.Web.Mvc.Routing 命名空间中,而Web API 中相似的类在System.Web.Http.Routing 命名空间中。再举一个例子, Web 页和 MVC 都是有Razor 语法, 可是仍然包含在相同功能的不一样NuGet包中。
在 ASP.NET 5 中, MVC、Web API和and Web 页将被整合到同一框架-MVC 6。这就意味着移除了重复功能模块,使开发应用变得更简单。
在预览版本中, MVC and Web API 首先被合并到MVC 6中。 Web 页面将后在后续发布版本中添加。
加强HTTP性能
ASP.NET 5 提供了一个精炼快速的HTTP 请求管道,该模块化管道容许你仅添加须要的组件,经过减轻管道开销,应用将有更好的吞吐量。
云部署能力
当你建立一个新的 ASP.NET 5 工程,这个工程默认就已经具有轻松部署到云端的结构。Visual Studio 2015 提供了全新的环境配置系统代替了Web.config 文件。新的系统容许使用多种文件类型(例如JSON, XML, or 或环境变量)存储键值对,所以你能够在任意环境中轻松指定值或获取这些值。
同时,ASP.NET 5提供了检测和跟踪已部署云应用问题的工具。
集成依赖注入
依赖注入被内置于ASP.NET 5中。你可使用 IoC容器注册依赖项。依赖关系的注入促进了正确服务环境的提供。
ASP.NET源码已经发布到GitHub中。不只仅提供了当前版本源代码,微软也承诺会同步更新GitHub中的源码,你能够及时查看到ASP.NET 的变化,能够下载而且提交更改到GitHub上。
这有助于你了解ASP.NET 代码及技术走向,同时你能够定制本身的ASP.NET。
提供敏捷的开发环境
Visual Studio 2015 提供了一个轻量级的ASP.NET 开发环境。无需从新编译工程,只须要保存更改代码,就能够在浏览器中查看最新结果。
你更改的代码能够在Web工程或者由当前Web工程中引用的类库中。
Visual Studio 使用 Roslyn 编译器容许动态编译。确保你拥有完整、强大的编译框架的同时,拥有趋近于解释语言的开发体验。
每一个Visual Studio 的用户界面都具备对应的脚本,所以你能够轻松在UI界面和脚本之间切换。
最后,可使用其余代码编辑器编辑ASP.NET 5 工程。
微软一直致力于提供给用户新的功能去改善开发体验,你仍旧能够开发Web Forms 应用,而且在Web Forms 4.6 添加了如下新特性:
HTTP 2
异步绑定模式
Roslyn CodeDOM 编译器
早期版本开发的 Web Forms 应用无需任何更改能够直接在 IIS .NET 4.6框架下运行。不过,没法使用ASP.NET 5 核心CLR新特性。
例如当前有使用Web Forms、 MVC 五、 Web API 二、SignalR 二、 Web Pages 3 或 Entity Framework 6 开发的应用,你仅需设置当前运行时版本为全功能运行时,无需作出任何代码级别修改便可在 ASP.NET 5中运行。 可是, 核心CRL是ASP.NET 5新特性,若是你但愿应用具有该运行时的功能,那么须要作出必定的修改。微软提供 API Portability Analyzer 工具能够判断当前应用是否可使用核心CRL。这个工具还能够分析当前应用能够运行在哪些平台,以及哪些因素阻止其不能在特定平台上运行。同时也会提示所须要的更改以及使用哪些新增接口来替换。
MVC 6 和 SignalR 3 应用使用新的HTTP管道,因此它们没法与使用System.Web 接口的应用兼容。若是须要升级已存在应用到MVC 6 或者 SignalR 3,你必须使用Visual Studio 2015 建立新工程,再导入原有工程,导入过程当中须要修改不支持的代码片断。