vNext又稱MVC 6.0,不再需要依賴System.Web,占用的內存大大減少(從前無論是多麼簡單的一個請求,System.Web本身就要占用31KB內存)。
可以self-host模式運行,網站不再需要依賴IIS而運行,由此從此可以快速向客戶演示開發進度,以及更好地支持真正跨平台(Linux、Mac、Unix)。
Web Api、Web Pages與MVC完全融為一體,統稱MVC 6.0。在過去,輸出JSON,既可以使用MVC自帶的return JSON,也可以使用Web Api,這樣分而治之的場面給整個社區都帶來不良影響(JSON僅是其中一個例子,其它很多功能都是一樣),現在,Web Api 完全融入了vNext,重復的輪子在這裡終於得到終結。
支持Poco形式的Controller,代碼更加干淨。
雲優化技術,也就是說在開發階段,系統本身並不真正加載某個組件,而是在運行時才查詢合適版本的組件,由此帶來的好處是在Azure雲主機、Mono主機和Windows主機上可以依賴最合適當前環境的某個組件Dll。
內置了依賴注入框架
使用Roslyn編譯器,生成的代碼更高效
與1~5.x的差異:
1:Project.json代替了從前的Web.config:
項目包的依賴項在dependencies節點中定義。
configurations節點保存的是項目設置信息。
commands節點保存的是self-host配置參數,例如本地綁定端口號。
自定義節點,例如自定義一個Data節點,在它的作用域中再定義一個DefaultConnectionString來記錄數據庫連接字符串。
2:Startup.cs代替了Global.asax
3:Views文件夾中不再需要專門的Web.config
當你添加某個引用(例如Entity Framework)的時候,需要網絡實時加載,所以如果遇到“找不到某某類庫”的錯誤時,不要擔心,過一會就好了。但是,有可能在某個良辰吉日裡,你無論等多久都沒用,因為我們身在天朝,你懂的。
================================================
MVC的基本概念不變,依然是從前的 RouteTable、Controller、View、Action、Razor、Model
下面的教程中涉及到加載包,以及各個包的版本號,例如"0.1-alpha-build-0403",也許你看到這篇文章的時候,版本號已經不適用了,最簡單的解決辦法是創建一個現成的ASP.NET vNext Web Application(注意不是空項目),它會加載當前可用的常用包,對照裡面的對應包的版本號。
如果需要輸出靜態文件,例如 .html、.jpg,需要加載專門的處理流程,它們保存在Microsoft.AspNet.StaticFiles中。
下面我們開始構建一個vNext站點:
創建一個ASP.NET vNext 空項目
之後得到的目錄結構,比從前簡單多了: