多個 .NET 框架


目前存在多個 .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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM