ASP.NET 5 (vNext) 理解和概述
概述
ASP.NET 5 (又稱為vNext) 是自ASP.NET產生15年以來一次革命性的更新, 我們可以從以下幾點來理解其概貌和意義:
- ASP.NET 5是開源的
- ASP.NET 5開發的WebApp是跨平臺的: 目前可以確認的平臺包括Windows, Linux和Mac
- ASP.NET 5是完基於OWIN標準, 已經全與System.Web.dll脫離. 換言之,vNext不一定要架設在IIS上面.
- ASP.NET 5是完全元件化開發, 開發者可以從無到有自行選擇其中的功能元件.
- ASP.NET 5完美支援雲部署
- ASP.NET 5開發環境需要 VS 2015 支援
執行環境
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)
服務 (Service)
基於依賴注入的元件實現,比如原來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標準的中介軟體並加入應用.
伺服器(Server)配置
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版本進行研究.
注意在建立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 決對是值得考慮的升級.
關於ASP.NET 5 的後續介紹文章,第一篇已經完成,請有興趣的同學移步: