相關信息
ASP.NET vNext 的發布文章稱其為.NET下一代,其實我個人覺得並不準確,ASP.NET vNext 就像其名字一樣,應該是 ASP.NET 的下一代版本。ASP.NET vNext 代表著.NET的未來的發展方向,比如說跨平台、開源等,也就是 vNext。關於 ASP.NET vNext,園中也有幾位大神寫過幾篇介紹的文章,以下是個人整理關於 ASP.NET vNext 的一些特性(更新時間為6月3日):
MVC、 Web API 和 Web Pages合併成一個框架,稱為 MVC 6。新的框架使用一組通用的抽象為路由、 行為選擇、 篩選器、 模型綁定等等。MVC 6 並不依賴於 System.Web,是一個更精簡的框架,用更快的啟動時間和記憶體占用較低(也就是“低記憶體消耗”以及“高吞吐量”)。
ASP.NET vNext 應用程式可以使用雲最佳化(Cloud-Optimized).NET Framework。大約 11 M的大小相比於 200 M的完整的框架,也是組成的 NuGet 包的集合(雲最佳化的功勞)。
雲最佳化框架的減少使實際部署的應用程式框架:
在同一台伺服器上,你可以使用不同版本的 Framework 運行應用程式。
•你的應用程式均從伺服器上的架構更改,絕緣。
•你可以為每個應用程式的 Framework 更新自己的時間表。
•當你部署套用造成開發機器上的 Framework 修補程式級別和套用伺服器之間不匹配的時候,不會出現任何錯誤(也就是“絕緣”的意思)。
•提供雲最佳化 Framework 的 NuGet 包,可實現以下目標:
•按需載入,不必要的部分不會載入到應用程式中。
•在 Framework 中,由於每個部分可以獨立更新,微軟可以將更新變的更快。
•ASP.NET vNext 與 Host 無關。你可以承載你的應用程式在 IIS 中,或自託管在一個自定義的過程(web API 2 和 SignalR 2 已經支持自託管,ASP.NET vNext 也會給 MVC 帶來同樣的功能)。
•支持依賴注入(也可以使用自己的 IoC 容器來註冊依賴項)。
•ASP.NET vNext 使用 Roslyn 編譯器動態編譯代碼。你可以編輯一個代碼檔案,刷新瀏覽器,並看到所做的更改,並沒有重建項目。除了簡化開發過程,動態代碼編譯在現在變得可能,如在 Visual Studio Online ('Monaco') 進行代碼編寫,你可以選擇你自己的編輯器和工具。
•ASP.NET vNext 開放原始碼。
•ASP.NET vNext 跨平台。
NET
有一個專門為雲端環境最佳化過的模式,該模式允許你在部署程式的時候連同他們所用到的.NET Framework的相關庫一同部署(譯者註:沒有用到的庫不會添加到裡面)。由於.NET的運行時和框架中的庫部署在了程式基礎(app-basis)上,所以在同一台機器上,每一個程式可以運行不同版本的.NET vNext,並且可以單獨升級,互不影響。這些庫已經被顯著的最佳化、精簡以便減少框架占用的空間,並且將會使用NuGet來發布。在這種模式下,和WPF以及Window Forms相關的一些庫已經被移除了。
我們始終以跨平台的思想來開發這個模式,在開發過程中我們和Xamarin積極合作,以確保經過雲端最佳化過的.NET程式可以運行在裝有 Mono 運行時的Mac和Linux上。.NET和ASP.NET的巨大生產力可以提供給那些使用混合開發環境的團隊。
ASPNET
ASP.NET vNext 是我們在 TechEd 上的一個重大發布。我們已經更新了ASP.NET的諸多方面,使ASP.NET的程式更容易構建並且在性能方面表現的更好。對於這些網站和服務,我們分別考慮了訪問量少的情況和訪問量超多的情況。我們開闢了新的場景,這些場景之前是不會在ASP.NET中發生的。
我們設計ASP.NET的時候考慮了一些關鍵性的設計原則,如下所示:為雲環境量身打造
對網站和服務使用單一的編程模型
低延時的開發者體驗
提供高性能、高效的API和模式——使得他們既可以單獨使用,又可以在一個套用中組合使用
可通過命令行工具和標準格式的檔案進行細粒度控制
使用NuGet交付
通過.NET Foundation開源發布
可以運行在 Mono,Mac 和Linux上
ASP.NET vNext 包括MVC,Web API,Web Pages,SignalR 以及 EF 的更新版本。對這些框架所做的主要改進在於MVC, Web API 和Web Pages已經被合併成了單一的編程模型。例如,現在控制器和路由的概念已經統一在了一起。對於同一個HTTP請求,你現在可以使用一個控制器來返回MVC視圖和格式化過的Web API回響。 ASP.NET vNext 程式是為雲環境設計的。像會話狀態和快取這些服務,會根據程式的運行環境(雲環境或普通的主機環境)來調整它們的行為,但是他們是以統一的API提供給開發者的。我們在底層使用了依賴注入的方法來讓你的程式去適應不同的環境。由於我們修改了底層實現的代碼,所以你可以在不修改代碼的情況下很容易的將你的程式從內部部署移植到雲環境中。
當你修改了web應用程式的代碼之後,不用再去執行編譯的步驟,直接刷新瀏覽器頁面就能查看到修改後的效果。這項對提升生產力很有意義的改進得益於我們對底層CLR載入時間的最佳化以及新的 .NET編譯器平台("Roslyn")。
你可以在下面的圖片中看到 ASP.NET vNext 實際工作時的情況。第一張圖展示了一個託管在命令行中的ASP.NET vNext 示例程式,你可以在瀏覽器中瀏覽。在Visual Studio中做的任何修改都會被自動編譯,並且在下一次刷新瀏覽器的時候執行。該程式使用的就是.NET vNext的雲端最佳化過的模式。你也可以像之前使用Visual Studio那樣,按F5鍵,Visual Studio 會自動打開一個web 伺服器和瀏覽器視窗。下面這張圖就使用的這種方法,但它的代碼和上面的一樣。
下面這張圖中的程式已經為.NET vNext 框架重新配置過,並沒有使用雲端最佳化過的模式。你只需要設定一下項目的屬性,這個程式就可以使用.NET框架提供的所有的API了。同樣,你只需要刷新一下瀏覽器就可以看到配置後的結果了。
下面這個表格列出了一些我們已經構建了的場景以及這些場景可以使用的地方。
ASP.NET vNext 將會以開源的形式貢獻給.NET基金會(.NET Foundation)。大家不用為此感到意外,因為我們早已經把ASP.NET Web stack開源了。以後,所有和ASP.NET vNext 相關的東西將會通過 NuGet 發布,保持開源,並歡迎大家貢獻代碼。
我們在TechEd上對.NET vNext 和 ASP.NET vNext 所做的介紹只是一個開始,在我們發布最終版之前的這幾個月里,我們會和大家分享更多相關內容。我們計畫發布一個pre-release版本,以便收集大家的反饋。