[翻譯]微軟 Build 2019 正式宣佈 .NET 5

原文: Introducing .NET 5html

今天,咱們宣佈 .NET Core 3.0 以後的下一個版本將是 .NET 5 。這將是 .NET 系列的下一個重要版本。web

未來只會有一個 .NET ,您將可以使用它來開發 Windows,Linux,macOS,iOS,Android,tvOS,watchOS 和 WebAssembly 等等。docker

咱們將在 .NET 5 中引入新的 .NET API、運行時功能和語言功能。編程

 

從 .NET Core 項目開始,咱們已經向平臺添加了大約五萬個 .NET Framework API。 .NET Core 3.0 彌補了 .NET Framework 4.8 的大部分剩餘功能差距,支持 Windows Forms,WPF 和Entity Framework 6。 .NET 5 構建於此工做之上,利用 .NET Core 和 Mono 的最佳功能建立一個平臺,您能夠用於全部現代 .NET 代碼。安全

咱們打算在 2020 年 11 月發佈 .NET 5,並在 2020 年上半年推出第一個預覽版。將在 Visual Studio 201九、Visual Studio for Mac 和 Visual Studio Code 的將來更新中支持它。架構

.NET 5 = .NET Core vNext

NET 5 是 .NET Core 的下一步。該項目旨在經過如下幾個關鍵方式改進 .NET:框架

  • 製造一個可在任何地方使用的 .NET 運行時和框架, 並具備統一的運行時行爲和開發人員體驗。
  • 經過充分利用 .NET Core、.NET Framework、Xamarin 和 Mono 來擴展 .NET 的功能。
  • 從單個代碼庫構建該產品,開發人員( Microsoft 和社區)能夠一塊兒工做並一塊兒擴展,從而改進全部方案。

這個新項目和方向是 .NET 的一個重要轉折。使用 .NET 5,不管您正在構建哪一種類型的應用程序,您的代碼和項目文件都將是相同的。每一個應用均可以訪問相同的運行時、API 和語言功能。也包括幾乎天天都在進行的 corefx 的性能改進機器學習

您所喜歡 .NET Core 的全部內容將繼續存在:工具

  • 在 GitHub 上開源和麪向社區。
  • 跨平臺實現。
  • 支持利用特定於平臺的功能,例如 Windows 上的 Windows form 和 WPF 以及來自 Xamarin 的每一個原平生臺的原生綁定。
  • 高性能。
  • 並排安裝。
  • 小型項目文件(SDK風格)。
  • 兼容命令行界面(CLI)。
  • Visual Studio,Visual Studio for Mac 和 Visual Studio Code集成。

也有一些新的東西:性能

  • 您將有更多關於運行時體驗的選擇(更多內容見下文)。
  • Java 互操做性將在全部平臺上提供。
  • 多個操做系統將支持 Objective-C 和 Swift 互操做性。
  • CoreFX 將擴展爲支持 .NET 的靜態編譯(ahead-of-time – AOT),更小的空間佔用和對更多操做系統的支持。

咱們將在今年 9 月發佈 .NET Core 3.0,在 2020 年 11 月發佈 .NET 5,而後咱們打算每一年 11 月發佈一次主要版本的 .NET:

咱們跳過了版本 4,由於它會讓熟悉 .NET Framework 的用戶感到困惑,由於 .NET Framework 已經使用了很長時間的4.x系列。此外,咱們但願清楚地傳達 .NET 5 是 .NET 平臺的將來。將其稱爲 .NET 5 使其成爲咱們發佈過的最高版本。

咱們也藉此機會簡化命名。咱們認爲若是隻有一個 .NET 是最好的了,咱們就不須要像 「Core」 這樣的澄清術語。較短的名稱是一種簡化, 還傳達了 .NET 5 具備統一的功能和行爲的信息。固然若是您願意也能夠繼續使用 「.NET Core」 這個名稱。

運行時體驗

Mono 是 .NET 的原始跨平臺實現。它最初是做爲 .NET Framework 的開源替代品,並隨着 iPhone/iOS 和 Android設 備的普及而轉變爲針對移動設備。Mono 是用做 Xamarin 一部分的運行時。

CoreCLR 是用做 .NET Core 一部分的運行時。它主要用於支持雲應用程序,包括 Microsoft 的最大服務,如今也用於 Windows 桌面,物聯網和機器學習應用程序。

總而言之,.NET Core 和 Mono 運行時有許多類似之處(畢竟它們都是 .NE T運行時),但也有寶貴的獨特功能。讓選擇所需的運行時體驗成爲多是很是有意義的。咱們正在使 CoreCLR 和 Mono 能夠互相替換。咱們將使它像構建開關同樣簡單,以便在不一樣的運行時選項之間進行選擇。

如下部分描述了咱們計劃用於 .NET 5 的主要重心。它們爲咱們計劃如何單獨和共同發展這兩個運行時提供了清晰的視角。

高吞吐量和高生產率

從一開始,.NET 就依賴於即時編譯器(JIT)將中間語言(IL)代碼轉換爲優化的機器代碼。從那時起,咱們構建了業界領先的基於 JIT 的託管運行時,該運行時具備很是高的吞吐量,而且還提升了開發人員體驗,使編程變得快速而簡單。

JIT 很是適合長期運行的雲和客戶端方案。他們可以生成針對特定機器配置的代碼,包括特定的 CPU 指令。JIT 還能夠在運行時從新生成方法,這一共讓 JIT 更快速的技術,同時仍可選擇生成高度優化的代碼版本 (若是這成爲常用的方法)。

咱們努力使 ASP.NET Core 在 Techpower 基準測試上運行得更快, 這是 JIT 強大的力量和咱們在 CoreCLR 上的投資的一個很好的例子。咱們爲容器強化 .NET Core的努力也證實了運行時動態適應受限環境的能力。

開發人員工具是 JIT 很是棒的另外一個好例子,例如 dotnet watch 工具或編輯並繼續。工具一般須要在單個進程中屢次編譯和加載代碼, 而無需從新啓動, 而且須要很是快速地執行此操做。

使用 .NET Core 或 .NET Framework 的開發人員主要依賴於 JIT 。所以,這種體驗應該是熟悉的。

大多數 .NET 5 工做場景的默認體驗將使用基於 JIT 的 CoreCLR 運行時。兩個值得注意的例外是 iOS 和客戶端 Blazor(web assembly),由於它們都須要 ahead-of-time (AOT) 原生編譯。

快速啓動,佔用空間小,內存使用率低

Mono 項目的大部分精力都集中在移動和遊戲機上。該項目的一個關鍵功能和結果是基於業界領先的 LLVM 編譯器項目的 .NET AOT 編譯器。Mono AOT 編譯器容許將 .NET 代碼內置到一個能夠在計算機上運行的原生代碼可執行文件中, 就像 C++ 代碼同樣。AOT 編譯的應用能夠在較小的位置高效運行, 並在須要時交換吞吐量以進行啓動。

Blavor 項目已經在使用 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、 web assembly 和一些遊戲機裏 AOT 編譯仍須要。對於更須要快速啓動或低佔用空間的應用程序, 咱們將使 AOT 編譯成爲一個選項。

該項目的誕生

咱們於 2018 年 12 月在波士頓召開了一個技術團隊,開始了這個項目。來自 .NET 團隊(Mono/Xamarin和.NET Core)以及 Unity 的設計領導者介紹了各類技術能力和架構方向。

咱們如今正在將這個項目做爲一個團隊推動,並提供一套可交付成果。自 12 月以來,咱們在一些項目上取得了不少進展:

  • 定義了一個最小層,它定義了運行時 <-> 託管代碼層,目標是實現 >99% 的 CoreFX 公共代碼。
  • MonoVM 如今可使用 CoreFX 及其類庫。
  • 使用 CoreFX 實如今 MonoVM 上運行全部 CoreFX 測試。
  • 使用 MonoVM 運行 ASP.NET Core 3.0 應用程序。
  • 在 CoreCLR 上運行 MonoDevelop,而後運行 Visual Studio for Mac。

遷移到單個.NET實現會引起一些重要問題: 目標框架將是什麼? NuGet包兼容性規則是否相同? .NET 5 SDK 應該支持哪些工做負載?如何爲特定架構編寫代碼?咱們還須要 .NET Standard嗎?
咱們如今正在解決這些問題,很快將分享設計文檔供您閱讀並提供反饋。

尾聲

.NET 5 項目是 .NET 的重要且使人興奮的新方向。您將看到 .NET 變得更簡單,但也具備更普遍,更普遍的功能和實用性。全部新的開發和功能都將成爲 .NET 5 的一部分,包括新的 C# 版本。

咱們看到了光明的將來,您可使用相同的 .NET API 和語言來面向各類應用程序類型、操做系統和芯片架構。在 Visual Studio ,Visual Studio for Mac,Visual Studio Code,Azure DevOps 或命令行中,能夠輕鬆更改構建配置以構建不一樣的應用程序。

轉載原文地址:https://www.cnblogs.com/Rwing/p/introducing-net-5.html

相關文章
相關標籤/搜索