ASP.NET 5 (又称为vNext) 是自ASP.NET产生15年以来一次革命性的更新, 我们可以从以下几点来理解其概貌和意义:
ASP.NET 5 运行的全新的运行环境框架: .NET Execution Environment (DNX) 中.
DNX简言之就是整合了所有需要的SDK和运行时环境的相关内容, 以便于.NET应用能够跨平台运行. DNX是一个全新的概念, 如果要深入了解, 请移步官方文档 DNX Overview.
用VS 2013 的同学都能够猜到了,2015 的组件管理就是Nuget, 而且同时还支持NPM 安装Node.Js组件.
但VS2015比VS 2013 更加严格, Nuget已经不是可选项而是必选项,直接添加DLL的模式被取消.所有组件必须通过Nuget方式进行添加.
ASP.NET 5 的唯一启动入口是 Startup类 (了解OWIN的同学并不陌生), 其样例代码一般为:
public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app) { } }
ConfigureService方法用于定义整个应用中的服务 (Service), 而Configure方法用于定义整个应用中加载的中间件 (Middleware)
基于依赖注入的组件实现,比如原来Controller里面的Attribute就是比较典型的Service组件,ASP.NET 5 内置有一定的默认Service,但它们也能很方便的通过 ConfigureServices函数进行替换.
中间件(Middleware)
基于OWIN的理论我们可以知道,我们通过Middleware管理请求管道(Request Pipeline),这个和IIS已经完全预设很多处理机制不同,如果没有任何Middleware的加载,可以认为这个管道是空的. 我们可以通过 Configure函数中的IApplicationBuilder参数的Use方法依次添加我们需要的Middleware.
当然, ASP.NET 5 也提供了几个标准的Middleware:
•Working with Static Files : 主要指静态文件功能,基于 ASP.NET StaticFile 组件.
•Routing: 主要指MVC和WebApi相关功能, 基于 ASP.NET Mvc 组件.
•Diagnostics: 主要指Logging相关功能.
•Authentication: 主要指用户验证相关功能,基于ASP.NET Identity组件.
另外开发人员可以自定义任何符合Owin标准的中间件并加入应用.
ASP.NET默认情况下, 支持IIS和Self-Hosting (基于WebListener组件) 2种服务器启动方式, 注意这2种模式的功能是完全一致的. Self-Hosting方式可以很方便在Windows环境下脱离IIS来运行你的应用; 而在其他平台可以选择基于Owin标准的其他Server实现,比如Kestrel web server. (代码和实现是都是一致的)
在加载StaticFile的组件的同时,我们需要同时设置整个项目的静态文件根目录,这个配置一般在项目配置文件: project.json 的“webroot” 属性中,默认为 wwwroot.
ASP.NET 5 使用了全新的配置文件体系, 新系统不在基于System.Configuration 或者 web.config, 新的配置文件体系内建了大量的配置文件提供组件 (configuration providers), 这些组件可以很方便的支持多种配置文件类型 (XML, JSON, INI甚至系统环境变量), 开发者甚至可以开发自定义的配置提供组件.
在默认情况下,ASP.NET 5的配置文件一般为project.json和config.json.
想尝试的同学可以再这里安装 VS2015 RC版本进行研究.
https://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs.aspx
注意在创建Web App的时候不要选择上面的MVC 4.6, 而选择下面的vNext.
MVC 4.6 和目前的机制大同小异, 意义不大.
默认项目里面的Project_Readme.html文件里面就有更多详细的内容, 有兴趣的同学可以一起学习.
最后说2 句,MS 这次真的是拼了, 开源, 跨平台, 组件化; AngularJS, JQuery, BootStrap 已经成为标配, Grunt and Gulp 登堂入室, 甚至可以直接进行Node.Js 开发.
另外如果你还想跟着MS 干, ASP.NET 5 决对是值得考虑的升级.
Introduction to ASP.NET 5
DNX Overview
Client-Side Development