.NET 的未來:.NET 5


前言

不知不覺中,.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 平台
.NET 5 將於 2020 年正式發布,.NET 6 將於 2021 年正式發布,以此類推。其中偶數版本號為 LTS 版本。

繼承

.NET 5 將制造一個可在任何地方使用的 .NET 運行時和框架, 並具有統一的運行時行為和開發人員體驗,並且通過充分利用 .NET Core、.NET Framework、Xamarin 和 Mono 來擴展 .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,並且針對頻繁調用的方法生成高質量代碼(即分層編譯)。

從 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 解決方案:

  • 需要 100% AOT 編譯的解決方案。
  • 大多數代碼是 AOT 編譯的解決方案, 但 JIT 或解釋器可用於 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 共享。

參考資料

https://devblogs.microsoft.com/dotnet/introducing-net-5


免責聲明!

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



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