.NET 9 釋出 效能提升、AI 支援與全方位改進

小码编匠發表於2024-11-13

前言

.NET 9 正式釋出,這是迄今為止最高效、現代、安全、智慧且高效能的 .NET 版本。

新版本凝聚了全球數千名開發者的共同努力,包含了數千項效能、安全性和功能性改進。

主要亮點

  • 效能提升:全面提升效能,降低記憶體使用。
  • 安全性增強:顯著的安全性改進。
  • AI 支援:輕鬆將 AI 整合到應用程式中。
  • 全面改進:涵蓋程式語言、開發工具和工作負載,提供統一的開發平臺。

.NET Conf 2024 大會

.NET Conf 2024 免費參加我們的三天虛擬開發者大會(11 月 12-14 日),深入瞭解 .NET 9 的新功能。

地址:https://www.dotnetconf.net/

讓我們一起看看 .NET 9 中新增的功能和工具的亮點。

.NET 9 釋出 效能提升、AI 支援與全方位改進

.NET 9 執行時效能改進、更低的記憶體佔用

.NET 9 是迄今為止效能最高的 .NET 版本,進行了 1,000 多項與效能相關的改進,並採用了更高效的演算法來生成更好的程式碼。

Stephen Toub 深入探討了這些改進,值得閱讀。

  • 伺服器 GC 最佳化

伺服器 GC 現在根據應用程式的實際記憶體需求進行調整,而不是依賴於環境中的資源(記憶體和 CPU)。這一變化特別適用於高核心數環境,尤其是在應用程式記憶體需求較小或隨時間變化較大的情況下。

這種新的 GC 實現減少了記憶體使用量,但可能會帶來輕微的吞吐量成本。使用者可以選擇配置伺服器 GC 使用舊版實現,以進行測試。

  • 效能提升

TechEmpower 基準測試顯示,.NET 9 在吞吐量上顯著提高,同時記憶體使用量大幅下降,這主要得益於伺服器 GC 的最佳化。

  • 向量化和硬體支援

.NET 9 迴歸向量化,增加了對 Arm64 SVE、Intel AVX10 等新晶片的支援,以及硬體加速執行時。

  • RyuJIT 效能提升

RyuJIT 提高了 Arm64、迴圈、PGO 和邊界檢查的效能。異常處理速度提高了 50%。

  • 動態 PGO 更新

動態配置檔案引導最佳化 (PGO) 更新,最佳化更多程式碼模式。JIT 為常見型別轉換生成快速路徑程式碼,使執行速度提高 70%,但需要禁用 ReadyToRun。

  • LINQ 最佳化

LINQ 方法如 TakeDefaultIfEmpty 在空集合時返回速度提高了 10 倍。Enumerable.SequenceEqual 透過 MemoryExtensions.SequenceEquals 實現高效的迭代和向量化,現在支援 List<T>

  • System.Text.Json 最佳化

System.Text.Json 的各種操作效能提升了超過 50%。JsonProperty.WriteTo 直接寫入 UTF8 位元組,減少字串分配。

新 API JsonMarshal.GetRawUtf8Value 替代 JsonElement.GetRawText,避免額外的編碼和分配。

JsonObject 最佳化了記憶體分配和調整大小的成本。

.NET 9 釋出 效能提升、AI 支援與全方位改進

.NET Aspire – 開發更好應用程式的基礎元件

.NET Aspire 是一組強大的工具、模板和包,用於無縫開發可觀察、生產就緒的應用程式。

自首次釋出以來的六個月內,我們對堆疊的所有部分進行了改進,包括遙測和指標儀表板的新功能以及更簡化的雲應用程式部署。

.NET 9 釋出 效能提升、AI 支援與全方位改進

新功能

從儀表板啟動和停止資源。

在除錯會話之間保持容器處於活動狀態。

新的 API,如 WaitFor,更好地管理資源啟動。

新整合

與 OpenAI、Ollama、Milvus 等無縫整合。

簡化獲取

更輕鬆地將 .NET Aspire 整合到應用程式中。

改進了 Azure 容器應用程式的部署方案。

預覽支援 Azure Functions。

廣泛採用

微軟內部:Xbox 和 Copilot 團隊已將 .NET Aspire 整合到他們現有的服務中,透過易於訪問的見解和 Azure 整合收緊了內部開發迴圈。

社群:.NET Aspire 被廣泛採用,社群積極參與並貢獻了新的工具和整合。

.NET 9 釋出 效能提升、AI 支援與全方位改進

人工智慧——不斷髮展和進步的 AI 生態系統

.NET 功能不斷擴充套件 ,以幫助我們注入人工智慧,主要進展包括:

學習材料和示例

提供新的學習材料和示例,簡化與生態系統整合的過程。

合作伙伴和社群

與 Azure、OpenAI、LlamaIndex、Qdrant、Pinecone、Milvus、AutoGen、OllamaSharp、ONNX Runtime 等合作伙伴合作,構建強大的 AI 生態系統。

與社群和控制元件供應商合作,構建智慧元件生態系統,使 AI 整合更加容易。

行業採用

H&R Block、Blip 和 KPMG 等公司已採用 .NET 構建頂級 AI 體驗。

.NET 支援 GitHub Copilot 和全新的 Microsoft Copilot 體驗。

無縫部署

將 AI 解決方案部署到雲端變得更加無縫。

.NET 9 中的 AI 生態系統擴充套件

強大的生態系統意味著開發人員有更多選擇來決定最適合他們的場景。為了簡化這些整合並降低進入障礙,我們與 Semantic Kernel 合作,在 Microsoft.Extensions.AIMicrosoft.Extensions.VectorData 下引入了一組抽象,為與 AI 服務互動提供統一的 C# 抽象層。這些抽象支援小型和大型語言模型(SLM 和 LLM)、嵌入、向量儲存和中介軟體。早期採用者如 Pieces 和 OllamaSharp 已經受益於這種新的簡化方法。

.NET 9 釋出 效能提升、AI 支援與全方位改進

張量和分詞器

在 .NET 9 中,我們對庫和基元型別進行了重大改進,以改進 AI 開發:

張量:引入了新的 Tensor<T> 型別,用於表示多維資料,簡化了庫和應用操作之間的互操作。

分詞器:Microsoft.ML.Tokenizers 支援多種標記化演算法,包括位元組級 BPE、SentencePiece 和 WordPiece。改進了對流行模型系列(如 GPT(4、o1 等)、Llama、Phi 和 Bert)的標記器支援。

降低進入門檻

隨著語言模型即服務的興起,開發人員使用人工智慧的進入門檻大大降低。我們提供的這些新構建塊旨在幫助開發人員更輕鬆地整合和使用 AI 服務。

快速開始

如感興趣的朋友可以瀏覽

AI 文件:https://devblogs.microsoft.com/dotnet/announcing-dotnet-9/aiextensions.svg

.NET 的 AI 示例:https://devblogs.microsoft.com/dotnet/announcing-dotnet-9/aiextensions.svg

.NET 9 釋出 效能提升、AI 支援與全方位改進

針對 .NET 開發人員的 GitHub Copilot 增強功能

GitHub Copilot 透過改善編輯器體驗並在常規工作流程中為 .NET 開發人員提供 AI 幫助,顯著提高了工作效率。

最新版本的 Visual Studio 和 Visual Studio Code 以及 GitHub Copilot 的更新,帶來了以下新功能:

  • AI 智慧變數檢查
  • 透過整合 AI 變數檢查最佳化除錯工作流程。
  • AI 驅動的 IEnumerable 視覺化工具
  • 在 IEnumerable 視覺化工具中,提供 AI 驅動的 LINQ 可編輯表示式。
  • 使用 GitHub Copilot 修復程式碼
  • GitHub Copilot 幫助解決程式碼問題。
  • 更好的 C# 人工智慧補全
  • GitHub Copilot 從相關原始檔中引入額外的上下文,改進 C# 補全。
  • 使用 GitHub Copilot 除錯測試
  • 透過 GitHub Copilot 的除錯測試功能,獲取除錯失敗測試的幫助。

ASP.NET Core 和 Blazor 進行全棧 Web 開發

ASP.NET Core 是 .NET 全棧 Web 框架,提供現代 Web 應用程式和可擴充套件後端服務所需的一切。

.NET 9 帶來了新功能以及顯著的效能、可訪問性和安全性改進。

.NET 9 釋出 效能提升、AI 支援與全方位改進

最佳化靜態檔案處理

在構建和釋出期間最佳化靜態 Web 資源(如 JavaScript 和 CSS 檔案),透過向檔名新增基於內容的雜湊生成指紋版本,確保檔名唯一併避免使用過時版本。

釋出時使用 Brotli 預壓縮檔案,減少下載大小並減輕伺服器負擔。

使用端點路由處理靜態檔案,支援每端點授權等高階功能。

.NET 9 釋出 效能提升、AI 支援與全方位改進

Blazor 改進效能提升

  • 效能在所有領域都有所改進。

  • 新的 Blazor 混合和 Web 應用模板。

  • 新 API 使開發人員能夠建立更流暢的使用者體驗。

元件渲染模式檢測

  • 使用 RendererInfo API 在執行時檢測元件渲染模式,預渲染期間禁用或隱藏互動元素,元件互動後啟用它們。

重新連線體驗

  • Blazor Server 應用程式受益於更友好的 UI、更快的重新連線和自動處理連線丟失時的頁面重新載入。

OpenAPI 增強功能

內建 OpenAPI 支援

  • 使用 Microsoft.AspNetCore.OpenAPI 包自動生成 OpenAPI 文件,後設資料從應用程式程式碼、屬性和擴充套件方法中提取。

  • 支援對操作、模式或整個文件進行定製。

  • Minimal API 應用程式中支援原生 AOT,最佳化效能。

  • 構建時生成 OpenAPI 文件,整合到本地開發工作流程中。

安全性改進開發證書設定

  • 在 Linux 上更輕鬆地設定受信任的開發證書,啟用 HTTPS。

身份驗證狀態傳輸

  • Blazor 提供內建 API 用於將身份驗證狀態傳輸到客戶端。

OAuth 和 OIDC 支援

  • 支援向 OAuth 和 OIDC 授權請求新增額外引數,以及對推送授權請求 (PAR) 的支援。

資料保護和連線指標

  • 強化資料保護支援。

  • 改進 Kestrel 的連線指標,便於檢測連線失敗原因。

.NET MAUI – 增強多平臺應用程式開發

.NET MAUI 是使用 .NET 跨移動和桌面構建多平臺應用程式的終極工具。

.NET 9 的主要目標是提高質量和可靠性,使您能夠更輕鬆地在生產中交付應用程式。

.NET 9 釋出 效能提升、AI 支援與全方位改進

社群參與和貢獻

  • 使用 .NET MAUI 構建的應用程式在 Google Play 商店中的數量翻倍。

  • 開發人員使用率增長了 30% 以上,達到歷史最高水平。

  • 社群參與度和貢獻顯著增加。

  • Syncfusion 自今年 7 月到 9 月開始貢獻,佔所有社群貢獻的 55%,比前 3 個月增長了 557%。

新專案模板

  • 引入全新的專案模板,包含 14 個免費開源 Syncfusion 控制元件和其他社群流行庫。

  • 演示 MVVM、資料庫訪問、導航、檢視重新整理等推薦實踐,幫助快速啟動應用程式開發。

效能和可靠性增強

  • 全面改進 .NET MAUI 的效能,包括 iOS 和 Mac Catalyst 的新實現CollectionViewCarouselView

  • 更新現有控制元件和應用程式生命週期,支援本機 AOT 和修剪增強功能,構建更小、更快的應用程式。

平臺支援

  • 支援最新的 iOS、macOS 和 Android 作業系統。

  • 新增了多種本機平臺功能,如 Android Asset Pack、改進的與本機庫的互操作性,以及透過新 Xcode dotnet 工具簡化 Xcode 和 Visual Studio Code 之間的整合。

使用 .NET 9 進行 Windows 開發

藉助 .NET 9 的 Windows 應用程式將能夠訪問最新的作業系統特性和功能,同時確保更高的效能和可訪問性。無論是使用 WinUI 3 和 Windows App SDK 構建新的現代應用程式,還是對現有的 WPF 和 WinForms 應用程式進行現代化改造,.NET 9 都能提供最佳支援。

WinUI 3

本機 AOT 支援,實現更小、效能更高的應用程式。

WPF

Fluent UI 現代主題增強,提升使用者介面體驗。

WinForms

新增深色模式、現代圖示 API 和改進的非同步 API 訪問(如 Control.InvokeAsync)。

.NET 9 釋出 效能提升、AI 支援與全方位改進

C# 13 和 F# 9 新功能

C# 是世界上最受歡迎和喜愛的程式語言之一。

C# 13 專注於讓我們能夠更輕鬆、更安全、更快速地編寫程式碼。

集合表示式

params修飾符現在支援任何受支援的集合型別,而不僅僅是陣列。

高效能程式碼

透過使用 ref struct 和 System.Threading.Lock,解鎖更高效能的程式碼和更輕鬆的多執行緒應用。

Lock myLock = new();
​
void Concat<T>(params List<T> items)
{
    lock (myLock)
        Console.WriteLine(string.Join("\e[1mItem: \e[0m", items));
}

F# 9 繼續為 .NET 開發人員提供最佳的函數語言程式設計體驗。

主要改進包括:

可空引用型別:與 C# 庫的互動更加型別安全。

最佳化的整數範圍:加快迴圈和其他推導式的速度。

最佳化的相等檢查:避免裝箱,提高常見操作的效能。

自動生成的 .Is* 屬性:為受歧視的聯合提供快速案例測試。

標準庫增強:包含集合的隨機函式,適用於資料科學和遊戲開發。

改進的診斷和工具:提高開發人員的生產力。

// FS3261: Nullness warning: The types 'string' and 'string | null' do not have equivalent nullability.
let methodArgument (s: string | null) = File.Create s
let matchNullableString(s: string | null) =    
    match s with  
    | null -> 0
    | notNull -> notNull.Length // notNull is of type string

.NET 9 開發工具更新

.NET 9 附帶了多項開發工具更新,旨在提高開發人員的工作效率。

Visual Studio 2022 17.12

  • 效能提升:顯著提升效能,提高開發效率。

  • 除錯和診斷:增強的除錯和診斷體驗。

  • .NET Aspire 整合:與 .NET Aspire 更緊密的整合。

  • 雲整合:更深入的雲整合。

  • C# 13 支援:支援 C# 13 的新功能。

  • Git 支援:增強的 Git 支援。

  • 使用者請求功能:包含大量使用者請求的功能。

Visual Studio Code 的 C# 開發工具包

  • 編輯可靠性:改進編輯可靠性。

  • NuGet 包管理:增強的 NuGet 包管理。

  • 測試介面卡:增強的測試介面卡和程式碼覆蓋率結果。

  • .NET MAUI 支援:改進的 .NET MAUI 開發支援。

  • 專案啟動/除錯:升級的專案啟動和除錯配置。

.NET CLI 改進

  • 終端記錄器:全面改進終端記錄器,包括可點選連結、持續計時器和顏色編碼。

  • 簡潔輸出:記錄器輸出更加簡潔,提供失敗和警告總數的摘要。

  • 軟體包審計dotnet restore更新,稽核頂級依賴項和傳遞依賴項的軟體包漏洞。

  • 中央包管理:與中央包管理完美配合,快速將包升級部署到所有專案。

  • 漏洞警報:在終端、Visual Studio 和 CI/CD 管道中提供包漏洞警報,由 GitHub Advisory Database 驅動。

.NET 9 釋出 效能提升、AI 支援與全方位改進

立即體驗 .NET 9 相關內容

.NET 9 以及 Visual Studio 2022 和 Visual Studio Code 的 C# 開發工具包的更新現已釋出。

下載連結

  • .NET 9
  • https://dotnet.microsoft.com/download/dotnet/9.0
  • Visual Studio 2022 v17.12
  • https://visualstudio.microsoft.com/downloads/
  • Visual Studio Code C# 開發工具包
  • https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit

瞭解新增功能

  • .NET 9 中的新增功能
  • https://learn.microsoft.com/dotnet/core/whats-new/dotnet-9
  • C# 13 中的新增功能
  • https://learn.microsoft.com/dotnet/csharp/whats-new/csharp-13
  • F# 9 中的新增功能
  • https://learn.microsoft.com/dotnet/fsharp/whats-new/fsharp-9
  • ASP.NET Core 中的新增功能
  • https://learn.microsoft.com/aspnet/core/release-notes/aspnetcore-9.0
  • .NET Aspire 中的新增功能
  • https://learn.microsoft.com/dotnet/aspire/whats-new
  • .NET MAUI 中的新增功能
  • https://learn.microsoft.com/dotnet/maui/whats-new/dotnet-9
  • EF Core 中的新增功能
  • https://learn.microsoft.com/ef/core/what-is-new/ef-core-9.0
  • WPF 中的新增功能
  • https://learn.microsoft.com/dotnet/desktop/wpf/whats-new/net90

最後

如果你覺得這篇文章對你有幫助,不妨點個贊支援一下!你的支援是我繼續分享知識的動力。如果有任何疑問或需要進一步的幫助,歡迎隨時留言。

也可以加入微信公眾號[DotNet技術匠] 社群,與其他熱愛技術的同行一起交流心得,共同成長!優秀是一種習慣,歡迎大家留言學習!

譯文:https://devblogs.microsoft.com/dotnet/announcing-dotnet-9/

相關文章