微軟在.NET跨平臺之路上付出了巨大的艱辛,同時做了海量的工作。首先推出了統一的API標準規范庫 .NET Standard,并不斷補充完善標準庫,截止目前(2021-5-26)最新版本為 .NET Standard 2.1。之后發布了跨平臺解決方案 .NET Core,同時建立.NET基金會,并大力發展生態建設,世界知名IT公司紛紛加入并貢獻,社區發展異常活躍。收購Xamarin公司后,Mono也正是加入微軟大家庭,填補了微軟技術棧在移動App開發領域的技術空白。
自此微軟.NET進化成了如下圖所示的全新大統一架構。
.NET Framework
.NET Framework開發平臺包括公共語言運行庫(CLR)和基類庫(BCL),前者負責管理代碼的執行,后者提供了豐富的類庫來構建應用程序。微軟最初設計.NET Framework是為了使應用具有跨平臺的可能性,但是微軟在將他們的實現努力投入,發現這一平臺在 windows上工作得最好。
自.NET Framework4.5.2成為 Windows操作系統的官方組件以來,NET Framework已經安裝在超過10億臺計算機上,所以對它的改動必須盡可能少。即使是修復bug也會導致問題,所以更新頻率很低。在計算機中,為.NET Framework編寫的所有應用程序都共享相同版本的CLR以及存儲在全局程序集緩存(GAC)中的庫,如果其中一些應用程序需要特定版本以保證兼容性,就會出問題。
實際上,.NET Framework僅適用于 Windows系統,因為是舊平臺,所以不建議使用它創建新的應用程序。
應用場景:針對傳統的桌面端解決方案,采用WPF與WinForm。
.NET Core
現代移動技術和計算的發展使得 Windows作為操作系統變得不那么重要了。正因為如此,微軟一直致力于將.NET從它與 Windows的緊密聯系中分離出來。在將 .NET Framework重寫為真正跨平臺的同時微軟也利用這次機會重構并刪除了不再被認為是核心的主要部分。
新產品被命名為 .NET Core,其中包括名為 CoreCLR 的 CLR 跨平臺實現和名為 CoreFX 的精簡類庫。
微軟負責.NET的項目經理 Scott Hunter認為:“.NET Core客戶中有40%是全新的平臺開發人員這正是我們想要的結果。我們想引入新人。”
.NET Core的運行速度很快,因為它可以與應用程序并行部署,所以.NET Core可以頻繁地更改,因為這些更改不會影響同一臺計算機上的其他 .NET Core 應用程序。微軟對 .NET Core 所做的改進無法添加到NET Framework中。
應用場景:針對跨平臺(Windows、linux、macOS)的解決方案,如物聯網IoT、人工智能AI、AR、MR、Web等。
Xamarin
第三方公司開發了名為 Mono 項目的 .NET Framework實現。Mono是跨平臺的,但是它遠遠落后于.NET Framework的官方實現。Mono 作為 Xamarin移動平臺以及 Unity 等跨平臺游戲開發平臺的基礎,已經找到了自己的價值。
微軟在2016年收購了 Xamarin,并且在 Visual Studio2019中免費提供曾經昂貴的 Xamarin擴展。微軟將只能創建移動應用程序的 Xamarin Studio開發工具更名為 Visual Studio2019 for Mac,并賦予它創建其他類型應用程序的能力。有了 Visual Studio201 99 for Mac,微軟就能夠將 Xamarin Studio編輯器的部分功能替換為 Visual Studio2019 for Windows的部分功能,以提供更接近的體驗和性能。
應用場景:針對移動端的解決方案,如IOS、Android、tvOS 和 watchOS。
.NET Standard
.NET平臺發展至今,微軟控制著三個技術平臺,如上圖所示。
- .NET Framework:用于舊應用
- .NET Core:用于跨平臺和新應用
- Xamarin:用于移動應用
以上每種.NET平臺都有優點和缺點,因為它們都是針對不同的場景設計的。這導致如下問題:開發人員必須學習三個.NET平臺,每個.NET平臺都有令人討厭的怪癖和限制。因此,微軟定義了.NET Standard,它是一套所有.NET平臺都可以實現的API規范,從而用來控制它們的兼容性級別。例如,與 .NET Standard1.4兼容的平臺表明提供基本的支持。
在.NET Standard 2.0及以后版本中,微軟已將這三種.NET平臺融合到現代的最低標準,這使開發人員可以更容易地在任何類型的.NET之間共享代碼。在.NET Core2.0及以后版本中,微軟增加了許多缺失的API,開發人員需要將為.NET Framework編寫的舊代碼移植到跨平臺的.NET Core中。但是有些AP已經實現了,可以拋出異常來指示開發人員,不應該實際使用它們。這通常是由于運行 .NET Core的操作系統不同導致的。
理解 .NET Standard 只是一種標準是很重要的。不能像安裝html5那樣安裝.NET Standard。要使用HTML5,就必須安裝實現了HTML5標準的Web瀏覽器。
要使用 .NET Standard,就必須安裝實現了.NET Standard規范的.NET平臺。 .NET Standard2.0是由最新版本的 .NET Framework、.NET Core和 Xamarin實現的。
最新的.NET Standard2.1僅由. NET Core3.、Mono和 Xamarin實現。C#8.0的一些特性需要.NETStandard2.1,.NET Framework4.8沒有實現.NET Standard2.1,所以應該把 .NET Framework 當作舊技術。
.NET Standard 具體介紹與使用,請參考我的博客《.NET平臺系列20 .NET Standard 應用詳解》系列
https://www.cnblogs.com/SavionZhang/p/14822232.html
- .NET Standard 簡介
- .NET Standard 版本支持
- .NET Standard SDK 樣式項目中的目標框架
- .NET Standard中配置TargetFrameworks輸出多版本類庫
- .NET Standard 類庫使用技巧
- .NET Standard 的未來
Common Infrastructure
公共基礎設施,簡稱CI。位于架構的最底層,構建于操作系統之上。主要包含開發語言、編譯器、運行時。詳細介紹請參考我的博客
- 《.NET平臺系列2 .NET Framework 框架詳解》
https://www.cnblogs.com/SavionZhang/p/14689688.html
- 《.NET平臺系列7 .NET Core 體系結構詳解》
https://www.cnblogs.com/SavionZhang/p/14781418.html
開發工具
- Visual Studio 微軟官方推出的宇宙第一IDE,它是一個完整的開發工具集,它包括了整個軟件生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發環境(IDE)等。
從 Visual Studio 第一代產品到目前的 Visual Studio 2019,它們與Windows系統緊密綁定,跨平臺需求出現以后,微軟又開發了支持跨平臺的開發工具 Visual Studio for Mac。下載地址:Windows 版& Mac 版 Visual Studio 2019 (microsoft.com)
- Visual Studio Code 微軟在2015年4月30日Build開發者大會上正式宣布一個運行于 Mac OS X、Windows和 Linux 之上的輕量級工具 Visual Studio Code,它是針對于編寫現代Web和云應用的跨平臺源代碼編輯器, 可在桌面上運行,并且可用于Windows,macOS和Linux。它具有對JAVAScript,TypeScript和Node.js的內置支持,并具有豐富的其他語言(例如C++,C#,Java,Python,php,Go)和運行時(例如.NET和Unity)擴展的生態系統。
隨著VS產品的不斷升級,功能越來越強大,自然就導致該產品比較龐大,稍顯笨重,對開發者的電腦硬件配置要求也不斷提高。并且包括Visual Studio 2019在內,VS一直都是32位的應用程序,主進程最多只能4GB,因此限制了VS的使用場景。2021年4月18號微軟宣布將于今年夏季發布首個64位的 Visual Studio 2022。
官方放出的測試視頻,Visual Studio2022打開一個包含 1600 個項目和約 30 萬個文件的解決方案,最高內存占用到5G+都沒問題!Visual Studio 2022還將大幅提升文件打開速度、代碼調試性能、代碼搜索性能,還將有著更強大的AI IntelliCode 引擎做代碼預測,還有更好的macOS支持等各種改進,在宇宙第一IDE的道路上繼續狂奔!