ASP.NET 5系列教程 (一):領讀新特性

TP_funny發表於2014-11-27
期微軟釋出了ASP.NET 5.0,本次釋出的新特性需求源於大量使用者的反饋和需求,例如靈活的跨平臺執行時和自主部署能力使ASP.NET應用不再受限於IIS、Cloud-ready環境配置降低了雲端部署的門檻,另外原始碼開放無疑也是一個重量級驚喜。這些更改會有助於建立易於開發、部署、維護和現代的Web應用程式。相信看到以上幾點作為.NET程式設計師的你已經迫不及待體驗ASP.NET 5 的新功能了,下面我們就來看下這些新特性。

ASP.NET 5 是用於建立Web應用的框架,相對於以前的版本它更加簡練、靈活,本次釋出的版本徹底優化了應用開發框架,你可以輕鬆部署應用到雲端或其他平臺,它包含了最小的模組化元件,所以確保你在構建複雜解決方案的同時保持靈活性。

ASP.NET 5 包含以下特性:
·靈活的跨平臺執行時
·新的HTTP模組請求管道
·Cloud-ready環境配置
·統一了包含 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開發應用相容性
為什麼重新設計 ASP.NET?
靈活的跨平臺執行時需求
早期 .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 和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 應用,並且在Web Forms 4.6 新增了以下新特性:
  • HTTP 2
  • 非同步繫結模式
  • Roslyn CodeDOM 編譯器
早期版本開發的 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 開發的應用,你僅需設定當前執行時版本為全功能執行時,無需做出任何程式碼級別修改即可在 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 建立新工程,再匯入原有工程,匯入過程中需要修改不支援的程式碼片段。
來自:部落格園
相關閱讀
評論(2)

相關文章