最近打算系統學習一下asp.net core ,苦於沒有好的中文書藉,只好找來一本英文的 《ASP.NET Core In Action》學習。我和多數人同樣,學習英文會明顯慢於中文。但願與我相同狀況的人避免這樣的低效,決定把書重要的部分提取出來分享給你們。git
ASP.NET Core是微軟ASP.NET Web框架的最新版本。於2016年6月發佈,相比以前ASP.NET有不少增量更新。 ASP.NET Core經過進行重大的體系結構調整來提升開發人員的工做效率和向後兼容性。從新設計Web框架和構建方式。 ASP.NET Core不少功能來至以前ASP.NET,但它是一個新的框架,整個技術堆棧全被重寫,包括Web框架和底層平臺。 與其餘現代框架相比,它有更新的定位和目標。同時保留之前ASP. NET 的優勢。github
ASP.NET的優勢和侷限性web
要知道微軟決定構建新框架的緣由,咱們得瞭解現有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?app
ASP.NET Core的四個主要目標:框架
一、跨平臺運行和開發;asp.net
二、採用模塊化架構,便於維護;模塊化
三、徹底開源;
四、適應當前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應用程序都將遵循相似的基本配置設計,如基礎庫那樣,但總的來講框架是靈活的,您能夠自由定義本身的代碼約定。
謝謝你的閱讀,下節見!若是期待本系列,請點一下推薦!