近期微軟發佈了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 版本模塊化
·自主部署或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 建立新工程,再導入原有工程,導入過程當中須要修改不支持的代碼片斷。解讀完ASP.NET 5的新特性,才能更好地利用這些新特性進行開發,同時還能夠藉助一些開發工具,ComponentOne Studio for ASP.NET 是ASP.NET平臺上的一整套完備的開發工具包,包含的Web窗體控件、MVC scaffolding模板以及HTML5/JavaScript頁面組件,僅經過幾行代碼就能夠在系統中實現豐富的功能。