三分鐘讓你秒懂.Net生態系統
提到.Net的時候,大多數人的第一反應可能就是.Net Framework和Visual Studio。.Net Framework的第一個版本發布與2002年2月13日,這對於科技發展日新月異的時代,這差不多已經可以看做是史前文明了。
.Net Framework發布之後,微軟就一直致力於讓它成為現代Web、移動和雲時代的可用性開發平台。這也促成了.Net Core 2和.Net Standard 2.0的發展,但是這種快速發展也往往讓人們開始對龐大的.Net 生態系統感到困惑。
.Net生態系統混亂
我們都知道.Net框架,但是它是如何在基類庫中工作的呢?什麼是攜帶型類庫?什麼時候使用?.Net Core又是什麼呢?與.Net Framework有什麼不同呢?什麼又是.Net Standard?如何安裝?如何建立一個可重用的庫呢?
上面的所有因素都會在你為項目選擇的時候造成困擾。什麼是.NET標準類庫,.NET Core或.NET Framework?什麼是共享項目和可移植類庫?你應該在哪裡集中精力?是否應該學習一切,放棄舊知識?如何選用runtime?……這些都是在開始下個項目或者學習新技術之前都需要了解的關鍵問題,所以本文將儘力在文中回答這些問題。
.NET生態系統解釋
為了滿足現代應用的需求,.Net生態系統正在經歷不斷的升級改造,下圖是.Net生態系統的現狀:
.NET框架
.NET生態系統中最古老也最致命的runtime就是.Net Framework。這也是大家容易混淆的地方,很多人一聽.Net Framework就自然的認為這是一個框架,當然它是框架,但也是個平台,所有的runtime都是這樣的。
正如前文所述,.Net Framework自2002年誕生以來,表現一直很搶眼,用戶可以使用它來構建WPF、Windows窗體、ASP.NET窗體和MVC應用程序。
.Net Framework可以構建多種類型的應用程序,但主要以Windows為中心的。這是這是因為.NET Framework為某些應用程序類型使用了某些特定於Windows的API。
.NET Core
.NET Core於2016年發布,可用於創建ASP.NET Core和通用Windows平台(UWP)應用程序。支持跨憑條和並發配置,這意味著可以在同一台計算機上運行多個版本的.NET Core,它很小,性能很好。
.NET Core不是.NET Framework的新版本,它只是一個可用於某些用例的不同版本。.NET Core不會取代.NET Framework。
Momo for Xamarin
Momo runtime本身也是.Net Framework的跨平台實現,可以運行各種應用程序,如控制台和Windows窗體應用程序。因為本文重點介紹.NET生態系統,所以Mono的討論將集中在Xamarin。
Xamarin從2011年開始運行,可創建適用於iOS,MacOS和Android的應用程序。它可以通過移動平台來構建和運行原生或者接近原生的應用程序。Xamarin的Mono運行時可使用iOS和Android的特定API,構建Xamarin.Mac應用程序。
.NET Standard
上面三個runtime都是實現.Net Standard的。.NET Standard是.NET API的一個規範,它為每個.NET運行時提供了實現。因此,為這個runtime創建的代碼也可以由另一個runtime來執行。
工具和基礎設施
所有runtime都需要使用工具和基礎設施來編譯和運行代碼,這其中包括C#、VB.NET和F#等耳熟能詳的語言都可以在runtime中運行。構建工具包括MSBuild、Common Language Runtime(CLR)和CoreCLR等。
運行時比較
下面我們來比較一下三種runtime的不同,例如工作負載、安裝方式、用途等等方面。
結論
本文中所提到的所有內容都可以被稱之為.NET開發平台。
.NET Framework,.NET Core和Mono是runtime,它們還包含用於構建應用程序的庫和框架。
.NET Standard Library 是一組API規範,它不是用戶下載和安裝的東西,而是描述API和API做什麼的規範。
最後,基礎設施是指讓上面所有的東西可以工作,它包含編譯器,語言和運行時組件,如垃圾回收器和即時編譯。
.Net生態系統看起來很複雜,但是當你這樣把它們一一分解開來,那麼你就會發現微軟如何改造其生態系統,並使之永葆活力和生命力。


TAG:IT168企業級 |