ASP.NET 5概觀 (ASP.NET 5 Overview)


 

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包含下列特點:

  • 全新的、彈性且跨平台的運行時(runtime)。
  • 全新的、模塊化的HTTP Request管道(pipeline)。
  • 實時可用的雲端環境設定。
  • 一致化的設計模塊,包含MVC、Web API與Web Pages(譯者批注:這是使用Razor語法撰寫的網頁程序,跟ASP.NET Web Form不相同)。
  • 不需重建項目就能看到前后版本的差異。
  • 完整對應(side-by-side).NET Framework各版本。
  • 能在IIS或自建的主機(self-host)上運作。
  • Visual Studio 2015的全新工具。
  • GitHub上的開放原始碼(源碼)。

 

我們為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也能修改這些基礎配置文件); 如更新部署到雲端中的應用程序,他們的軟件套件依存關系。

 

消除MVCWeb APIWeb 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(請到此觀賞影片,影片可選中文字幕)。有關Web Form在Visual Studio 2013 Update2近期變化的信息,請參閱 Improvements to ASP.NET Web Forms

 

以前的應用程序呢?

你可能會擔心隨着ASP.NET 5的版本編號不斷改變,讓你需要重新編寫所有的應用程序。別擔心!你在早期版本建立的ASP.NET應用程序將繼續與新的.NET架構一起運作。如果你不需要用到ASP.NET 5的新功能,你並不需要更新或重新部屬(安裝)這些應用程序。

 

例如,你的應用程序,目前使用Web Form、MVC 5、Web API 2、SignalR 2、Web Pages 3或Entity Framework 6,都可以在完全不經修改的情況下,完整獲得新架構支持。但是,你很可能需要使用「完整的.NET CLR」來執行這些舊版本的應用程序,因為只有這個(完整版)CLR提供與早期版本完全兼容。

 

在cloud-optimized(針對雲端優化的)runtime上面提供了很多限制型的API的接口。使用cloud-optimized runtime時,應用程序必須只使用這個runtime專用的類型和成員。

 

想知道你的應用程序可不可以在cloud-optimized runtime執行嗎?請使用API Portability Analyzer工具來偵測一下。此工具會告訴你哪個平台上的應用程序可以針對並避免應用程序移動到另一個平台時會產生的相依性。它可以幫助你了解需要改變的范圍,並提出新的類型或成員代替那些已經不被支持的軟件套件。

 

MVC 6和SignalR 3的應用程序使用新的HTTP pipeline,所以它們不與兼容於使用System.Web的應用程序。要升級現有的應用程序到MVC 6或SignalR 3,您必須透過Visual Studio 2015新建一個新項目,然后你的程序代碼移植到新項目里面。移植到新版本時,可能需要修改一些已經不支持的程序代碼。

 

 

 

看完本文之后,您可以繼續參閱以下內容:

 

Next steps

 

The following videos (影片介紹)describe the latest enhancements:

 

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/)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM