不知不覺中,.NET Framework 已經更新到 4.8,.NET Core 也更新到了 3.0 版本。那麼 .NET 的將來怎麼樣呢?安全
2019 年 Build 大會上,微軟宣佈下一個 .NET 版本(繼 .NET Core 3.0 和 .NET Framework 4.8 以後)將是 .NET 5,統一 .NET Framework 和 .NET Core,今後只有一個 .NET,能夠用來開發Windows,Linux,macOS,iOS,Android,tvOS,watchOS 和 WebAssembly 等等。架構
.NET 5 將基於 .NET Core 和 Mono 的最佳實踐構建出一個平臺,用於全部現代 .NET 平臺的開發。
.NET 5 將於 2020 年正式發佈,.NET 6 將於 2021 年正式發佈,以此類推。其中偶數版本號爲 LTS 版本。框架
.NET 5 將製造一個可在任何地方使用的 .NET 運行時和框架, 並具備統一的運行時行爲和開發人員體驗,而且經過充分利用 .NET Core、.NET Framework、Xamarin 和 Mono 來擴展 .NET 的功能,最重要的是,所有開源,官方和社區共同參與擴展和改進。asp.net
.NET 5 仍然是開源的、跨平臺的、高性能、支持旁加載安裝模式和命令行操做等等,並與 Visual Studio、Visual Studio for Mac 和 Visual Studio Code 集成。機器學習
.NET 5 是基於 .NET Core 和 Mono 出來的,也就是說不存在斷代的問題,是 .NET Core 的一個升級,同時改個名字順便統一一下生態,也就是說您現有的 .NET Core 項目屆時應當能夠無縫升級,就像從 .NET Core 2 升級到 .NET Core 3 那樣。性能
新的 .NET 5 中,你能夠選擇使用 Mono 或 CoreCLR 運行時,前者主要針對移動設備、遊戲平臺和 WebAssembly,後者主要針對雲服務、物聯網、機器學習以及 Windows Desktop 等。學習
另外,.NET 5 將在全部平臺上提供與 Java 的互操做性,和在多個系統上的 Objective-C 和 Swift 的互操做性。測試
.NET 依賴 JIT 將 IL 轉化爲優化的機器代碼,構建了業界領先的基於 JIT 的託管運行時,具備很是高的性能,提高開發人員的體驗。優化
JIT 很是適合長期運行的雲和客戶端方案,它可以生成針對特定機器配置的代碼,包括特定的 CPU 指令。JIT 還能夠在運行時從新生成方法,能夠進行快速的 JIT,而且針對頻繁調用的方法生成高質量代碼(即分層編譯)。ui
從 Techpower 基準測試上 ASP.NET Core 運行的更快也是 JIT 的強大力量和在 CoreCLR 上投資的很好的例子。
大多數 .NET 5 工做場景的默認將使用基於 JIT 的 CoreCLR 運行時。不過 iOS 和 WebAssembly 例外,由於它們都須要 AOT 執行原生編譯。
Mono 項目的大部分精力都集中在移動和遊戲機上。該項目的一個關鍵功能和結果是基於業界領先的 LLVM 編譯器項目的 .NET AOT 編譯器。Mono AOT 編譯器容許將 .NET 代碼內置到一個能夠在計算機上運行的原生代碼可執行文件中,就像 C++ 代碼同樣。AOT 編譯的應用能夠在資源十分有限的地方中高效運行。
Blavor 項目 (WebAssembly) 已經在使用 Mono AOT,這將是最先過渡到 .NET 5 的項目之一。
有兩種類型的 AOT 解決方案:
Mono AOT 支持這兩種狀況。出於安全緣由,蘋果對 iOS 和一些遊戲機須要第一種 AOT。第二種方法是更好的選擇,由於它即具 AOT 優勢同時還能避免各類缺點。
.NET Native 是用於 Windows UWP 應用程序的 AOT 編譯器,也是上面列出的第一種 AOT 類型的示例。在這個實現裏限制了 .NET API 和可使用的功能。微軟從這一經驗中瞭解到,AOT 解決方案須要涵蓋 .NET API 和模式的全部方面。
在 iOS、WebAssembly 和一些遊戲裏將仍然採用 AOT 編譯。而對於更須要快速啓動或低佔用空間的應用程序,AOT 編譯將成爲一個可選項。
.NET 5 將融合 .NET Framework、.NET Core、Mono、Xamarin 等優勢構建出一個統一的 .NET 平臺,開發人員能夠在此平臺上用 C#、VB.NET、F#、XAML 語言、使用相同的 API 開發針對任何系統、任何架構、任何形態的應用程序,而且代碼和庫都可以經過 .NET Standard 共享。