.NET 8 預覽版 1:NativeAOT 升級和新的Blazor United

2023-02-22 09:03:00

Download .NET 8 Preview 1

.NET團隊 今天在官方部落格上 釋出了.NET 8的第一個預覽版,.NET 8 是一個長期支援 (LTS) 版本[1],.NET 的版本包括產品、庫、執行時和工具,是 Microsoft 內部和外部多個團隊之間的共同作業。.NET 8 預覽版和候選釋出版本將每月交付一次,最終交付時間是今年的.NET 大會

.NET 8 預覽版 1 中的新增功能方面主要有兩個:NativeAOT編譯的完善,在Web開發方面,新的Blazor United專案融合了混合匹配伺服器端和使用者端渲染功能。

.NET團隊首席專案經理的Jeremy Likness在 「宣佈.NET 8 Preview 1 [2] 貼文中說 ,NativeAOT是在.NET 7中引入的,但開發團隊將在11月釋出的.NET 8 中投入更多工作,例如減小應用大小,Linux 版本現在縮小了 50%,使用Native AOT釋出應用程式會建立一個完全獨立的應用程式版本,不需要單獨的執行時,因為所有內容都包含在單個檔案中,從預覽版1開始,這個檔案更小。事實上,Linux 版本現在縮小了 50%。

在知乎上有大量的討論 NativeAOT的缺席阻礙了.NET的採用,微軟將NativeAOT的優勢列為:

  • 減少記憶體佔用:與 JIT 編譯的程式碼相比,AOT 編譯的程式碼需要更少的記憶體,因為 JIT 編譯器生成 AOT 編譯應用程式中不需要的中間程式碼。這對於記憶體有限的裝置(如嵌入式系統和移動裝置)尤其有益。
  • 縮短了啟動時間:與 JIT 編譯程式碼相比,AOT 編譯的程式碼啟動速度更快,因為它消除了 JIT 編譯器生成中間程式碼並針對特定硬體和軟體環境優化程式碼的需要。這對於必須快速啟動的應用程式特別有用,例如系統服務、無伺服器「函數」和後臺任務。
  • 延長電池壽命:與 JIT 編譯程式碼相比,AOT 編譯程式碼消耗的功率更少,因為它消除了 JIT 編譯器生成中間程式碼並針對特定硬體和軟體環境優化程式碼的需要。這對於依賴電池的裝置(如移動裝置)尤其有益。

與此同時,ASP.NET Core首席專案經理 Daniel Roth 寫了文章ASP.NET .NET 8 預覽版 1 中的核心更新[3],介紹了他的團隊正在做什麼,從史蒂夫·桑德森(Steve Sanderson)的原型專案開始,他稱之為「Blazor United」:

Daniel Roth說到  「在.NET 8中,我們正在努力將伺服器端和使用者端渲染的優勢結合到基於Blazor的單個全棧程式設計模型中,我們目前稱這種努力為'開拓者聯隊'。Blazor United 將允許你使用單個基於 Blazor 的體系結構進行伺服器端呈現,並與 Blazor Server 或 WebAssembly 進行完整的使用者端互動。這一切都在一個專案中,能夠在不同的渲染模式之間輕鬆切換,甚至在同一頁面中混合它們。Blazor United還將啟用新的渲染功能,例如流式渲染以及導航和表單貼文的逐步增強。

他還介紹了面向 Web 開發人員的本機 AOT:「.NET 7 引入了對將 .NET 控制檯專案發布為NativeAOT[4] 的支援,生成一個獨立的、特定於平臺的可執行檔案,沒有任何執行時 JIT。本機 AOT 應用的啟動速度非常快,並且使用更少的記憶體。可以將應用程式部署到未安裝任何 .NET 執行時的計算機或容器。在 .NET 8 中,我們將把對NativeAOT的支援擴充套件到 ASP.NET Core,從使用最小 API 構建的以云為中心的 API 應用開始,這些應用可以滿足有關已釋出檔案大小、啟動時間、工作集和吞吐量效能的預期。

除了對本機AOT的討論外,Likness還強調了其他關於容器映像,JSON改進,Linux支援等常規.NET 8工作。新的「.NET 8 中的新增功能」[5]檔案中詳細介紹了所有內容。 至於 ASP.NET Core改進的細節,有興趣的讀者可以查閱 .NET 8 的 ASP.NET Core路線圖[6],其中以 Blazor 的 24 項為主,以 Blazor United 為首,如下圖所示:

image

微軟同時還發布了配套的開發工具支援:包括Visual Studio 2022 v17.5,Visual Studio for Mac 17.5和EFCore 8 Preview 1

相關連結: