[toc] 目前存在多個 .NET 框架。 Microsoft 的宗旨是在最大範圍的操作系統和硬體平臺上提供 .NET 實現。 下表列出了最主要的 .NET 實現: 實現|描述| | .NET Core|真正跨平臺和開源的 .NET 框架,為伺服器和命令行應用程式提供了高度模塊化的 API 集合 M ...
目錄
目前存在多個 .NET 框架。 Microsoft 的宗旨是在最大範圍的操作系統和硬體平臺上提供 .NET 實現。 下表列出了最主要的 .NET 實現:
實現 | 描述 |
---|---|
.NET Core | 真正跨平臺和開源的 .NET 框架,為伺服器和命令行應用程式提供了高度模塊化的 API 集合 |
Microsoft .NET Framework | 第一個、最大和最廣泛部署的 .NET 框架 |
Xamarin | .NET 的移動平臺實現,支持 IOS 和 Android,支持單一代碼庫的移動應用開發,同事允許訪問本機平臺 API |
Mono | 最早的 .NET 開源實現,是 Xamarin 和 Unity 的基礎。目前 Mono 已被 .NET Core 代替 |
Unity | 跨平臺 2D/3D 游戲引擎,用於為游戲機、PC、移動設備和網站開發電子游戲 |
應用程式編程介面
數據類型(比如 System.Console
)的所有方法(常規地說是成員)定義了該類型的應用程式編程介面(Application Programming Interface,API)。
API 定義軟體如何與其他組件交互,所以單獨一個數據類型還不夠。通常,是一組數據類型的所有 API 結合起來為某個組件集合創建一個 API。
以 .NET 為例,一個程式集中的所有類型(及其成員)構成了該程式集的 API。類似地,.NET Core 或 Microsoft .NET Framework 中的所有程式集構成了更大的 API。
通常將這一組更大的 API 稱為框架,所以我們用“.NET 框架” 一詞指代 Microsoft .NET Framework 的所有程式集公開的 API。
API 通常包含一組介面和協議(或指令),幫助你使用一系列組件進行編程。事實上,對於 .NET 來說,協議本身就是 .NET 程式集的執行規則。
C# 和 .NET 版本控制
.NET 框架的開發周期有別於 C# 語言,這造成底層 .NET 框架和對應的 C# 語言使用不同版本號。例如,使用 C# 5.0 編譯器將預設基於 Microsoft.NET Framework 4.6 來編譯。 下表簡單總結了 Microsoft .NET Framework 和 .NET Core 的 C# 和 .NET 版本。
版本 | 描述 |
---|---|
C# 1.0 和 NET Framework 1.0/1.1(Visual Studio 2002 和 2003) | C# 的第一個正式發行版本。Microsoft 團隊從無到有創造了一種語言,專門為 .NET 編程提供支持 |
C# 2.0 和 .NET Framework 2.0(Visual Studio 2005) | C# 語言開始支持泛型,.NET Framework 2.0 新增了支持泛型的庫 |
.NET Framework 3.0 | 新增一套API來支持分散式通信(Windows Communication Foundation,WCF)、富客戶端表示(Windows Presentation Foundation,WPF)、 工作流(Windows Workflow,WF)以及 Web 身份驗證(Cardspaces) |
C# 3.0 和 .NET Framework 3.5(Visual Studio 2008) | 添加對 LINQ 的支持,對集合編程 API 進行大幅改進。.NET Framework 3.5 對原有的 API 進行擴展以支持 LINQ |
C# 4.0 和 .NET Framework 4(Visual Studio 2010) | 添加對動態類型的支持,對多線程編程 API 進行大幅改進,強調了多處理器和核心支持 |
C# 5.0 和 .NET Framework 4.5(Visual Studio 2012) | 添加對非同步方法調用的支持,同時不需要顯式註冊委托回調。框架的另一個改動是支持與 Windows Runtime(WinRT) 的互操作性 |
C# 6.0 和 .NET Framework 4.6/.NET Core 1.x(Visual Studio 2015) | 添加字元串插值、空傳播(空條件)成員訪問、異常過濾器、字典初始化器和其他許多功能 |
C# 7.0 和 .NET Framework 4.7/.NET Core 1.1/2.0(Visual Studio 2017) | 添加元組、解構器、模式匹配、嵌套方法(本地函數)、返回引用等功能 |
隨 C# 6.0 增加的最重要的一個框架功能或許是對跨平臺編譯的支持。換言之,不僅能用 Windows 上運行的 Microsoft .NET Framework 編譯,還能使用 Linux 和 macOS 上運行的 .NET Core 實現來編譯。
雖然 .NET Core 的功能比完整的 Microsoft .NET Framework 少,但足以使整個 ASP.NET 網站在非 Windows 和 IIS 的系統上運行。這意味著同一個代碼庫可編譯並執行在多個平臺上運行的應用程式。
.NET Core 是一套完整 SDK,包含從 .NET Compiler Platform(即“Roslyn”,本身在 Linux 和 macOS 上運行)到 .NET Core “運行時”的一切,另外還提供了像 Dotnet 命令行實用程式(dotnet.exe,自 C# 7.0 引入)這樣的工具。
.NET Standard
有這麼多不同的 .NET 實現,每個 .NET 框架還有這麼多版本,而且每個實現都支持一套不同的、但多少有點重疊的 API,造成框架分叉得越來越厲害。
這增大了寫跨 .NET 框架可重用代碼的難度,因為要檢查特定 API 是否支持。為降低複雜度,Microsoft 推出了 .NET Standard 來定義不同版本的標準應支持哪些 API。換言之,要相容於某個 .NET Standard 版本,.NET 框架必須支持該標準所規定的 API。
但由於許多實現已經發佈,所以哪個 API 要進入哪個標準的決策樹在一定程度上基於現有實現及其與 .NET Standard 版本號的關聯。
原文鏈接:https://www.vinanysoft.com/c-sharp-basics/introducing/multiple-dotnet-frameworks/