天天看點

.NET Core和.NET Standard有什麼不同

.NET Core和.NET Standard有什麼不同

近日,微軟釋出了.NET Core 2.0,但是開發人員中間仍然存在一些疑惑,就是.NET Core、.NET Standard、Xamarin和.NET Framework有什麼不同。

.NET Framework用于建構桌面應用程式和運作在網際網路資訊伺服器(IIS)上的ASP.NET應用程式。它是第一個托管架構。

Xamarin是一個用于建構iOS、Android、macOS和桌面應用程式的架構。

.NET Core

.NET Core是免費、跨平台的,是托管架構的開源實作。它支援4種類型的應用程式:控制台、ASP.NET Core、雲和通用Windows平台(UWP)。Windows Forms和Windows Presentation Foundation(WPF)并不包含在.NET Core中。

從技術上講,.NET Core僅支援控制台應用程式。ASP.NET Core和UWP是以.NET Core為基礎建構的應用程式模型。

與.NET Framework不同,.NET Core沒有作為Windows元件考慮。是以,更新是以NutGet包的形式,而不是通過Windows Update。由于.NET Core運作時安裝成了App-Local,而應用程式更新是通過包管理器完成的,是以應用程式可以關聯特定的.NET Core版本以及單獨更新。

.NET Standard

托管架構的每一種實作都有一套自己的基類庫。基類庫(BCL)包含諸如異常處理、字元串、XML、I/O、網絡和集合這樣的類。

.NET Standard是一項實作BCL的規範。由于.NET實作需要遵循這項規範,是以應用程式開發人員就不用擔心每一種托管架構實作的BCL不同。

架構類庫(FCL),如WPF、WCF、ASP.NET,不包含在BCL中,是以,也就不包含在.NET Standard中。

.NET Standard與.NET實作之間的關系就和HTML規範與浏覽器之間的關系一樣。後者是前者的實作。

是以,.NET Framework、Xamarin和.NET Core,每一種托管架構都實作了.NET Standard中的BCL。随着計算機工業不斷推出新的硬體和作業系統,将來還會出現新的.NET托管架構。該标準讓應用程式開發人員知道,他們可以依賴于一套始終如一的API。

每個.NET版本都對應一個.NET Standard版本。

API一緻,将應用程式移植到不同的托管實作以及提供工具都會更簡單。

.NET Standard被定義為一個單獨的NuGet包,因為所有的.NET實作都必須支援它。工具變得簡單了,因為對于特定的版本,它們有一套相同的API。你還可以針對多個.NET實作建構一個庫項目。

你還可以建構特定平台API的.NET Standard封裝器。

.NET Standard vs 可移植類庫

可移植類庫做的不是同一件事嗎?

可移植類使用多個平台均都支援的通用API。是以,支援的平台越多,可用的API就越少,而且,對于特定的平台組合,很難知道到底支援哪些API。對于一個新平台,已有的PCL必須重新編譯。PCL還需要微軟針對每個平台建立一個新的架構實作分支。

由于.NET Standard确定了API,而不是一個實作,是以不需要重新編譯應用程式。任何新釋出的.NET實作都實作了必須的庫。應用程式不需要重新編譯就可以運作在新的硬體平台或作業系統上。從理論上講,在調用API時可能會捕獲到NotSupportedException異常,但那種情況應該很少見。

小結

.NET Standard是一項API規範,每一個特定的版本,都定義了必須實作的基類庫。

.NET Core是一個托管架構,針對建構控制台、雲、ASP.NET Core和UWP應用程式進行了優化。每一種托管實作(如Xamarin、.NET Core或.NET Framework)都必須遵循.NET Standard實作BCL。

.NET Core和.NET Standard有什麼不同

原文連結

參考資料

https://github.com/dotnet/standard/blob/master/docs/versions.md

-----------------------------------------------------------------

我做的小程式們

【推薦】Web版短信管理平台源碼

WinForm版短信管理平台源碼

移動短信程式源碼Win服務版(CMPP3.0/CMPP2.0協定)

移動物聯網卡短信源碼(CMPP3.0協定,支援MsSql/MySql資料庫)

C#實作聯通短信Sgip協定程式源碼

C#實作電信短信SMGP協定程式源碼

C#實作移動短信CMPP服務端程式源碼