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