目錄
- 應用程式編程介面
- C# 和 .NET 版本控制
- .NET Standard
目前存在多個 .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/
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/93240.html
標籤:C#
上一篇:簡單介紹托管執行和 CLI
