ASP.NET Core是微軟ASP.NET Web框架的最新版本。於2016年6月發佈,相比之前ASP.NET有很多增量更新。 ASP.NET Core通過進行重大的體繫結構調整來提高開發人員的工作效率和向後相容性。重新設計Web框架和構建方式。 ASP.NET Core很多功能來至之前ASP.N... ...
最近打算系統學習一下asp.net core ,苦於沒有好的中文書藉,只好找來一本英文的 《ASP.NET Core In Action》學習。我和多數人一樣,學習英文會明顯慢於中文。希望與我相同情況的人避免這樣的低效,決定把書重要的部分提取出來分享給大家。
ASP.NET Core是微軟ASP.NET Web框架的最新版本。於2016年6月發佈,相比之前ASP.NET有很多增量更新。 ASP.NET Core通過進行重大的體繫結構調整來提高開發人員的工作效率和向後相容性。重新設計Web框架和構建方式。 ASP.NET Core很多功能來至之前ASP.NET,但它是一個新的框架,整個技術堆棧全被重寫,包括Web框架和底層平臺。 與其他現代框架相比,它有更新的定位和目標。同時保留以前ASP. NET 的優點。
ASP.NET的優點和局限性
要知道微軟決定構建新框架的原因,我們得瞭解現有ASP.NET Web框架的優點和局限性。
ASP.NET的第一個版本於2002年作為.NET Framework 1.0的一部分發佈。相比當時傳統的ASP和PHP,ASP.NET Web Forms允許開發人員使用圖形設計器、簡單的像Windows應用中的事件模型快速創建Web應用程式。但隨著時間的推移,web開發生態發生很大的改變。ASP.NET Web Form 遇到了許多問題,尤其是在構建大型的應用程式時,缺乏可測試性,複雜的有狀態模型以及對生成複雜的HTML使得客戶端開發變得異常困難,這些導致開發人員選擇了別的開發平臺。為了扭轉這種局面,微軟於2009年發佈了第一版的ASP.NET MVC,它基於MVC模式(模型 - 視圖 - 控制器),這種Web設計模式廣泛用於Ruby on Rails,Django和Java Spring等框架。它允許UI元素與應用邏輯分離,易於測試,並提供能控制HTML生成過程的能力。ASP.NET MVC自首次發佈以來已經進行了四次迭代,但它們都建立在由System .Web.dll庫提供的底層框架上,該庫是.NET Framework的一部分,包含了ASP.NET在構建web 應用時的所有核心代碼,因此它依賴於Windows。這種依賴性既帶來了優點又帶來了缺點。一方面,ASP.NET框架是一個經過實戰考驗的可靠平臺,是在Windows上構建現代應用程式的絕佳選擇。它提供的眾多的功能已經多年運用於web應用系統,這是從事windwos web 應用開發人員所熟知的。另一方面,這種依賴性導致它更新速度很慢,至多只能第每年發佈一次,因為對System.Web.dll的修改涉及到了NET Framework 。另外它Windows Web主機Internet信息服務(IIS)的耦合,阻止了它在非Windows平臺上的使用。
近年來,許多Web開發人員開始關註跨平臺Web應用,可以在Windows、Linux和macOS運行的框架。同時,微軟也感覺到,是時候創建一個不再依賴於Windows的框架了,於是ASP.NET Core誕生了。
什麼是ASP.NET Core?
ASP.NET Core的四個主要目標:
1、跨平臺運行和開發;
2、採用模塊化架構,便於維護;
3、完全開源;
4、適應當前Web開發趨勢,例如:客戶端應用程式和部署到雲環境;
為了實現這些目標,Microsoft需要一個可以提供 ,用於創建List(列表)和dictionaries(詞典)等基本對象,以及執行簡單的文件操作的底層庫的平臺。到目前為止,ASP.NET開發一直專註於,依賴於Windows專用的.NET Framework。對於ASP.NET Core,它是Microsoft創建的一個在Windows上運行的輕量級平臺,Linux和macOS稱之為.NET Core,如下圖所示。
.NET Core與.NET Framework共用許多相同的API,但它更小,目前只實現了.NET Framework提供的功能的一個子集,它提供更簡單的實現和編程模型的目標,是一個全新的平臺,而不是.NET Framework的分支,儘管它們使用許多相似的API代碼。
僅使用.NET Core,就可以構建運行跨平臺的控制台應用程式。 微軟創建了ASP.NET Core作為控制台之上的附加層應用程式,例如:將控制台應用程式轉換為Web應用程式涉及添加的庫。如下圖所示:
最上面的 .NET Core console 可以運行在 ASP.NET Core web Server中,微軟提供了一個跨平臺的預設實現--Kestrel, web application 邏輯層在Kestrel中運行, 通過添加相應的類庫來增加應用的功能,比如:日誌記錄(Logging)、Html 生成。
ASP.NET Core由許多小型庫組成,可以根據應用的需要添加相應的庫,很少有應用會用到所有的可用庫。有一些常用的庫,幾乎會出現在每個應用程式中,例如:讀取應用程式 配置文件、日誌記錄。其他類庫可建立在這些基礎庫之上,例如第三方提供的通過Facebook或Google登錄的庫。在ASP.NET Core中使用的大多數庫都可以在GitHub上(https://github.com/aspnet)找到。例如Kestrel Web Server和日誌庫、例如第三方認證庫以及更多的外圍庫。所有ASP.NET Core應用程式都將遵循類似的基本配置設計,如基礎庫那樣,但總的來說框架是靈活的,您可以自由定義自己的代碼約定。
謝謝大家的閱讀,如果期待我更繼續更新本系統,請點一下推薦!我的博客地址:http://www.cnblogs.com/VolcanoCloud/