http://www.asp.net/vnext/overview/aspnet-vnext/aspnet-5-overview
ASP.NET 5概觀(ASP.NET 5 Overview)
原作:Tom FitzMacken (2014/11/12)
譯者:MIS2000 Lab. (www.dotblogs.com.tw/mis2000lab/)
ASP.NET 5簡介
ASP.NET 5是一個精煉的.NET堆棧(lean .NET Stock)用來建構現代化的網絡應用程序。我們從最底層一步一步建構起來,并且提供各種應用程序一個優化的開發架構,您可以建構云端的應用或是在本機上運行兩者都可。.NET Framework包含了各種最小耗能(minimal overhead)的模塊化組件,讓您可以靈活地建構各式解決方案。
ASP.NET 5包含下列特點:
我們為ASP.NET 5所做的改變都是源自客戶的要求與回饋。這些改變都是為了讓網絡應用程序的開發、托管(hosting)與維護更加簡便。
您的舊版應用程序不需任何異動就可以在新版本ASP.NET上面運作。然而,想要用到ASP.NET 5新功能的優點,您將需要把既有的程序代碼轉移到新的架構上。 你會發現ASP.NET 5和早先版本的ASP.NET之間有很多相似之處,所以程序代碼轉移只需修正一些具體的議題,而不用全面改寫應用程序。
下載Visual Studio 2015 PReview
請由此下載Visual Studio 2015 Preview(http://www.visualstudio.com/en-us/downloads/visual-studio-2015-downloads-vs 下載VS 2015預覽版),關于VS 2015的新功能可以參閱 http://www.visualstudio.com/en-us/news/vs2015-preview-vs
為何重新設計ASP.NET?
需要更彈性、跨平臺的運作
過去,.NET Framework是單一、兼容并蓄的(all-encompassing)完全安裝。隨著.NET的每一個版本的演進,功能只有新增卻很少刪除,因此該架構的容量不斷激增。這種做法確保了安裝.NET的每一臺Windows主機可以支持所有類型的.NET應用程序,但它也意味著每個應用程序沿用了許多它未曾用到的功能。
如果一種.NET的技術需要重大更新,即使你并沒有直接使用這部分的.NET,您也會收到一個通知建議您進行更新。你必須決定是否要安裝此更新,過程中可能忍受中斷服務器,或是您忽略這次更新,希望你忽略的部分恰巧沒用到。
ASP.NET 5為您提供了更大的靈活性,能在下列三者中運作情境下執行:
1. 完整的.NET CLR
完整的.NET CLR是Visual Studio中預設運作的專案。它提供了整個API集合,是為了各種版本向下兼容的最好選擇。
2. Core CLR(云端優化的運行時)
Core(核心)CLR是一個精煉、完全模塊的運行時(runtime),用在ASP.NET 5的專案上。這CLR已被重新設計成組件,以便您可彈性地包含你需要的部分在應用程序里面。您可以透過NuGet添加組件。當你完成之后,你的應用程序只用到需要的功能即可(不必包山包海地納入全部功能)。通過重新分解runtime為各自單獨的組件,因為每個組件的更新可以有其自己的時程,我們可以更迅速地提供某些需要改進的組件(譯者注:個別更新,不需要等到全部改進后才發表)。如此一來,核心的Core CLR十分精簡,只有11MB大小,而不是完整的200MB .NET CLR。該核心CLR可以隨著您的應用程序進行部署,而不同版本的核心 CLR可以side-by-side地運作(這兩種優點在下面更詳細地描述)。
3. 跨平臺CLR
未來,我們將會發布跨平臺的runtime在linux和Mac OS X操作系統上。將來發布時,這些版本的runtime將開發并在Mac和Linux設備上運行.NET應用程序。上述的跨平臺CLR事宜,我們將與Mono社群緊密合作。待它發表時,您將可以使用Mono CLR作為跨平臺開發。 欲了解更多信息,請參閱開發Mac上的ASP.NET vNext應用。
預設的情況下,新的Visual Studio項目會使用完整的.NET CLR。您也可以定義Core CLR在項目的設定屬性里面(如下圖)。
無所不在的Host
ASP.NET 5允許您可以部屬您的應用程序在IIS或自己的主機(self-host)上面運作。當你鎖定(確認)Core CLR以后,你可以為每一份即將部屬的應用程序,綁定專屬的軟件套件。因此,您的應用程序和它所依賴的套件均是完全獨立(自給自足的,self-contained)的,不再依賴于系統既有(事先安裝好)的.NET版本。不久的將來,任何類型的設備或主機平臺都能執行您的應用程序。
這樣的新功能為您提供更多的自由。我們仍然建議IIS是主機的最佳選擇,但在某些情況下,你可能需要用到不同的主機平臺。現在,您只需部署您的項目到該主機上頭。您的主機屬性不再綁死在開發的架構上面,反之亦然。
如果想要更多的例子,可以參閱Create a Web API in MVC 6。
完整對應(side-by-side)不同版本的.NET Framework
當一臺服務器上的應用程序依賴于一個單一的、完全安裝的.NET Framework時,所有的應用程序必須執行同一版本的.NET才行。考慮是否要升級到新版.NET Framework時,可能造成你的不安。也許,你想讓一些應用程序使用最新的.NET版本,但你無法確定是否所有的舊版應用程序都可以跟新的.NET一起運作。
幸運的是,ASP.NET 5解決了這個問題。您可以自行定義「部屬的軟件套件」內的相關性,所以你可以為「每個應用程序」定義它需要的.NET版本。你可以得到最新版應用程序帶來的好處,并可以輕易地讓某些應用程序搭配舊版本來執行。各種不同版本.NET可以side-by-side地運行而且沒有任何問題。要運行不同版本請您務必鎖定Core CLR。
簡化相關性(Simplify dependency management)
ASP.NET 5引薦了一個新的、輕量化的方式來管理項目的相關性(dependency)。你不再需要在項目中個別「加入參考」(add assembly references),相反地只需要透過NuGet就能管理這些外掛的組件。您可以藉由的NuGet Package Manager添加的NuGet軟件套件,或者您可以編輯JSON文件(如project.json檔)來控管項目中使用的NuGet軟件套件與版本。要添加其他的外掛套件,只需輸入的NuGet套件名稱和版本編號到project.json檔案里面即可(如下圖)。
在Visual Studio 2015中,智能提示(IntelliSense)也能找到NuGet軟件套件的關鍵詞,如下圖。
前述的project.json檔案只包含您想加入項目中的NuGet套件。如果添加的NuGet套件跟其他軟件套件互相依賴(彼此相關),這些相關的套件也會被加載,但不會列在project.json檔里面。這種作法讓你的project.json檔更簡潔、也更易于管理。如果你從project.json檔移除了某幾個NuGet套件,與其相關套件也會被刪除(前提是:如果沒有其他的套件也引用到它們)。
即使你沒有安裝Visual Studio,(上述的)JSON格式也能讓您更輕松地管理軟件套件(外掛)之間的依存關系。你可以在任何一種文本編輯器打開project.json文件并進行修改(譯者批注:不安裝Visual Studio也能修改這些基礎配置文件); 如更新部署到云端中的應用程序,他們的軟件套件依存關系。
消除MVC、Web API與Web Pages之間的重復
過去的MVC、Web API與Web Pages有許多重迭的特性,但這些功能的實作卻是各自獨立的(譯者批注:Web Pages是使用Razor語法撰寫的網頁程序,跟ASP.NET Web Form不相同)。例如,MVC和Web API均提供路由(routing)的功能,但MVC路由的類別卻放在System.Web.Mvc.Routing命名空間里,而Web API的卻放在在System.Web.Http.Routing命名空間內。 或者,Web Pages和MVC皆使用Razor的語法,但有些NuGet套件分別只兼容(MVC或Web Pages)其中一種。
在ASP.NET 5,MVC、Web API和Web Pages將被合并成一個.單一架構,名為MVC 6。這樣的合并消除了重復的架構,使您更輕松地開發使用這些程序架構框架的應用程序。你不需要為了是否在MVC,Web API或Web Pages前后文關系中,再去撰寫類似的程序代碼了。
在VS 2015預覽版里面,MVC與Web API已經在MVC 6統一了。Web Pages將會再下一個MVC 6的釋出版本中加入。
改善HTTP效能
ASP.NET 5引入了一個新的HTTP Request管道(pipeline)是精簡和快速。這條管道是模塊化的,所以你可以只添加您需要的組件即可。透過減少管道的消耗,你的應用程序將體驗到更好的傳輸量(throughput)。新管道仍支持OWIN。
云端立即可用
當你新建一個ASP.NET 5項目,此項目的先天結構就是部署到云端環境而生。 Visual Studio 2015提供了一個全新的環境設定系統(譯者批注:需使用VS 2015的「項目(Webapplication)」,并挑選「ASP.NET 5」才行),它取代了既有的Web.config檔。新系統讓您能夠從各種來源(如JSON,xml,或環境變量)要求(索取)已命名的值。你為每個環境指定的值,或是在部署以后能讓您的應用程序只需讀取正確的值。
我們還提供診斷和追蹤工具,使你更容易地發現在云端里面的應用程序問題。
整合dependency injection
Dependency injection(DI)也是內建在ASP.NET 5的功能,您可以使用Inversionof Control(IoC)容器來注冊這些相關性。Dependency injection(DI)有利于對環境提供正確的服務。欲了解更多信息,請參見Dependency Injection in ASP.NET vNext。
開放源碼與透明
所有的ASP.NET 5的程序代碼都放到GitHub上面了。不僅是程序代碼可用,而且GitHub repositories也融入我們的開發之中。你可以清楚地看到.NET進行了哪些更改,每次變更以后,您可以下載程序代碼并把修正后的結果提交給我們。
在GitHub上開發ASP.NET 5,我們讓您更容易理解程序代碼,了解我們的預期方向發展,有助于增強和建置您想要客制化的ASP.NET功能。
更靈活的開發環境
Visual Studio 2015為ASP.NET應用程序提供了一個輕量級的開發者經驗。您只需改變你的程序代碼、存盤、然后刷新瀏覽器畫面(如下圖)。就可以看到在Web瀏覽器的修改成果,而無需重新建置(re-build)項目。
如上圖,倘若你改變的程序代碼是在Web項目中、或是在您的項目中引用的類別庫里面。你還是得執行(CTRL + F5)項目,而不是在debug模式下看到這些動態地的變化。
Visual Studio使用羅斯林(Roslyn)編譯程序啟動了這個動態的編譯。你仍擁有所有編譯架構的結構和權力,但開發經驗感覺更像是一種直譯型(Interpreted)語言。
Visual Studio用戶接口(UI)中的每一個功能都可以對應命令行(command-line)的操作。您可以在用戶接口和編寫command-line script之間輕松轉換。
最后,您可以使用其他的程序代碼編輯器來完成你的ASP.NET 5專案。
Web Form怎么了?
您可以繼續開發Web Form應用程序,并有信心Web Form是.NET的Web開發平臺的重要組成部分。我們將繼續致力于增加新功能,以Web Form提高開發經驗和保持最新網絡實務的技術。
Web Form 4.6包括Web Form以下新的特點:
您既有的Web Form應用程序將繼續地運作,在不變更在IIS的情況下以.NET 4.6執行。但是您不能使用Web Form應用程序在cloud-optimized(針對云端優化的)runtime上面。
有關新功能的Web Form 4.6,請參閱Web Forms 4.6(請到此觀賞影片,影片可選中
新聞熱點
疑難解答