靈活的跨平臺運行時需求
早期 .NET Framework 版本一直作為單一且全面的整體進行安裝,每個新版本都包含了新功能和幾乎所有早期功能,而鮮有刪減,這就不可避免的造成Framework的體積的增長。這種模式確保了安裝了新版 Framework的Windows系統(tǒng)可以兼容所有早期版本的.NET 應用,但是也意味著每個應用都將運行在一個龐大冗余的框架上,即使很多功能在實際項目中沒有使用。
相信每位.NET程序員都遇到過以下尷尬的決策場景:當收到Framework有更新發(fā)布時的通知時,是放棄使用新增功能保持應用的靈活性還是使用新特性而忍痛讓你的Framework更加龐大!
為了應對以上場景。ASP.NET 5提供了三種運行時,你可以根據(jù)實際需要靈活選擇:
1.全功能.NET CLR全功能.NET CLR 是Visual Studio工程默認運行時狀態(tài)。它提供所有 API,是保持應用向下兼容性最佳選擇。
2.核心CLR (cloud-optimized runtime)核心 CLR 是精簡的完全模塊化運行時。這個CLR已經(jīng)被重新設計成組件便于你僅包含項目中實際使用的的.NET特性。組件作為NuGet 包添加。一旦完成引用,你的應用僅依賴于所需的功能。通過分解運行時為組件,我們可以更快的更改每個組件,因為每個組件都有自我更新機制。核心CLR只有11M大小,相對于200M的全功能CLR無疑將使應用更加輕便。核心CLR可以伴隨應用一起部署并且不同的核心CLR可以并行運行。
3.跨平臺CLR微軟將發(fā)布針對于linux 和 Mac OS X 發(fā)布跨平臺運行時。這意味著你的.NET應用具備了在Mac 和Linux 設備上運行的能力。微軟將和Mono社區(qū)合作完成這一新特性。在發(fā)布之前,你可以使用Mono CLR用于跨平臺開發(fā)。
新建 Visual Studio 工程默認使用全功能 .NET CLR,可以在工程屬性頁面更改為核心CLR。
ASP.NET 5 允許部署應用到 IIS,或脫離IIS進行獨立部署,當設置目標 Framework 為Core CLR時,即可以使用部署包中的依賴項來部署應用。因此,你的應用自成一體,再不依賴于全功能的.NET 版本。該應用可以在任何設備和平臺中運行應用。
這對.NET平臺開發(fā)人員無疑又是個驚喜,部署應用不在局限于IIS,當然微軟仍然推薦你使用IIS部署應用,但是如果需要在不兼容IIS的平臺部署應用,你就可以使用該新特性進行操作。
后續(xù)文章中我們會發(fā)布如何創(chuàng)建不依賴于IIS 的MVC6應用,敬請期待。
多版本.NET并行使用
早期版本的.NET Framework,你將時刻面臨是否更新版本的選擇,一方面你希望使用更新的功能,另一方面你將為舊版本開發(fā)的工程是否可以平滑遷移到新版 .NET Framework 而感到糾結(jié)。
微軟在 ASP.NET 5中改善了以上問題。在使用核心CLR前提下,你可以在部署包內(nèi)定義依賴關(guān)系,所以你可以為每個應用程序指定.NET版本。 舊版應用可以平滑運行,同時你也可以使用新版本開發(fā)應用。因此在ASP.NET 5中多個版本的.NET應用是并行的。
ASP.NET 5 推出了一種全新的輕量級依賴關(guān)系管理機制。你不再需要在應用中添加引用,而是使用引用NuGet 包代替。你可以通過NuGet Package 管理器添加NuGet包,或者你可以編輯包含NuGet包列表和版本信息 JSON 文件(PRoject.json)來實現(xiàn)引用。project.json 文件用于列舉應用使用的 NuGet 相關(guān)信息,如需添加其他引用,直接在該JSON文件中添加即可。
早期版本中, MVC、Web API 和Web 頁一直在使用著不同的方式實現(xiàn)著相同的功能,可以說是殊途同歸。例如, 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。這就意味著移除了重復功能模塊,使開發(fā)應用變得更簡單。
在預覽版本中, MVC and Web API 首先被合并到MVC 6中。Web 頁面將后在后續(xù)發(fā)布版本中添加。
增強HTTP性能
ASP.NET 5 提供了一個精煉快速的HTTP 請求管道,該模塊化管道允許你僅添加需要的組件,通過減輕管道開銷,應用將有更好的吞吐量。
云部署能力
當你創(chuàng)建一個新的 ASP.NET 5 工程,這個工程默認就已經(jīng)具備輕松部署到云端的結(jié)構(gòu)。Visual Studio 2015 提供了全新的環(huán)境配置系統(tǒng)代替了Web.config 文件。新的系統(tǒng)允許使用多種文件類型(例如JSON, xml, or 或環(huán)境變量)存儲鍵值對,因此你可以在任意環(huán)境中輕松指定值或獲取這些值。
同時,ASP.NET 5提供了檢測和跟蹤已部署云應用問題的工具。
集成依賴注入
依賴注入被內(nèi)置于ASP.NET 5中。你可以使用 IoC容器注冊依賴項。依賴關(guān)系的注入促進了正確服務環(huán)境的提供。
ASP.NET源碼已經(jīng)發(fā)布到GitHub中。不僅僅提供了當前版本源代碼,微軟也承諾會同步更新GitHub中的源碼,你可以及時查看到ASP.NET 的變化,可以下載并且提交更改到GitHub上。
這有助于你了解ASP.NET 代碼及技術(shù)走向,同時你可以定制自己的ASP.NET。
微軟一直致力于提供給用戶新的功能去改善開發(fā)體驗,你仍舊可以開發(fā)Web Forms 應用,并且在Web Forms 4.6 添加了以下新特性:
早期版本開發(fā)的 Web Forms 應用無需任何更改可以直接在 IIS .NET 4.6框架下運行。不過,無法使用ASP.NET 5 核心CLR新特性。
例如當前有使用Web Forms、 MVC 5、 Web API 2、SignalR 2、 Web Pages 3 或 Entity Framework 6 開發(fā)的應用,你僅需設置當前運行時版本為全功能運行時,無需做出任何代碼級別修改即可在 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 創(chuàng)建新工程,再導入原有工程,導入過程中需要修改不支持的代碼片段。
新聞熱點
疑難解答