.NET 9 預覽版 5 釋出

张善友發表於2024-07-10

微軟在6月釋出了.NET 9預覽版的第五個版本。這個新版本的框架預計將在今年晚些時候正式釋出,它是一個標準支援(STS)版本,將在2024年11月12日至2026年5月12日期間在多個作業系統上獲得18個月的支援。這個預覽版帶來了效能改進和一些新特性,例如增強的AI能力、優先順序無界通道、SearchValues的子字串搜尋,以及在OpenTelemetry中更靈活的活動連結。

其中一個最重要的特性是AI能力的擴充套件,包括TensorPrimitivesTensor<T>型別的更新版本。TensorPrimitive類提供了對數值操作的靜態方法,其方法覆蓋範圍從.NET 8的40個增加到大約200個。新引入的Tensor<T>型別旨在提供與AI庫(如ML.NET)的高效互操作性,並支援資料操作,如索引和切片。

另一個有趣的更新是優先順序無界通道。無界通道是指沒有儲存專案數量限制的執行緒通道。新引入的優先順序通道透過在System.Threading.Channels庫中新增CreateUnboundedPrioritized<T>方法來提供,該通道按Comparer<T>.Default或提供的自定義IComparer<T>對元素進行排序。

此外,.NET 8中引入的SearchValues型別現在支援在更大的字串中搜尋子字串,這是利用底層平臺SIMD支援的最佳化實現。OpenTelemetry活動連結現在透過新增System.Diagnostics.Activity.AddLink方法變得更加靈活。

其他更新包括用於Task的新API,特別是新的Task.WhenEach方法,它允許使用await foreach迴圈遍歷任務,直到它們完成。還包括對TypeDescriptor類的修剪支援,一個新的TypeName類用於解析ECMA-335型別名,以及paramsSpan過載的更好效能。

ASP.NET Core 9預覽版的第五個版本的這個更新主要集中在最佳化靜態網路資產的交付和改善Blazor Server的重連體驗上,同時還引入了用於執行時檢測元件渲染模式的新特性以及其他各種改進,旨在簡化開發並提升使用者體驗。

主要改進包括:

  1. 靜態網路資產交付最佳化:新的MapStaticAssets API旨在大多數情況下替代UseStaticFiles。它針對在構建和釋出時已知的資產進行最佳化,使用gzip和brotli壓縮,減少資產大小並提高使用者載入時間。

  2. Blazor Server重連體驗改善:Blazor Server應用需要實時連線才能正常工作。新變化引入了指數退避策略進行重連嘗試,快速開始並逐漸引入延遲。

  3. 執行時檢測元件渲染模式:ComponentBase類現在包括一個Platform屬性,即將更名為RendererInfo,具有Name和IsInteractive屬性。這些屬性幫助開發者瞭解元件執行的位置以及是否可互動。

  4. 簡化Blazor Web應用的認證狀態序列化:新的API使得向現有專案新增認證變得更加容易。

  5. 新的.NET MAUI Blazor混合和Web解決方案模板:這個模板簡化了建立針對Android、iOS、Mac、Windows和Web的應用,同時最大化程式碼重用,並自動為Blazor Web應用和.NET MAUI Blazor混合應用設定專案。

.NET 9 MAUI預覽版的第五個版本的這個更新帶來了新的.NET MAUI Blazor混合和Web應用專案模板,以及對Android API 35 Beta 2的支援,同時在Android平臺上對效能和應用大小進行了最佳化。

新引入的.NET MAUI Blazor混合和Web解決方案模板簡化了建立針對Android、iOS、Mac、Windows和Web的應用,同時最大化程式碼重用,並自動為Blazor Web應用和.NET MAUI Blazor混合應用設定專案。值得注意的是,MAUI Blazor混合應用在目標裝置上使用WebView和Blazor移動檢視進行渲染,並不是一個完全成熟的本地應用。

對於非Blazor MAUI應用在Android上的執行,預覽版5帶來了大約15%的啟動時間效能提升。為了實現這一點,程式碼預設使用LLVM marshall方法,修改彙編程式碼以使用LLVM marshalling結構。對於MAUI Blazor應用在Android上,團隊發現了一個導致應用程式掛起的問題,並正在調查根本原因。因此,如果專案針對Blazor應用,則禁用此效能最佳化。

隨著Android 15 Beta計劃的進展,.NET 9 MAUI預覽版5增加了對Android API 25 Beta 2的繫結,對應於Android 15 Beta 2的釋出。讀者可以在Android Developers網站上找到Android API 25 Beta 2的完整更改日誌。

此外,還新增了大小修剪增強功能,以在釋出編譯模式下減少編譯後的應用大小。可以在專案檔案中禁用此功能。

iOS上.NET MAUI實現的增強主要集中在修復錯誤和改進構建質量上。

完整的釋出說明可以在GitHub官方MAUI倉庫中找到。此外,GitHub上還提供了所有五個.NET 9預覽版中MAUI更改的完整列表。

相關文章