行業新聞

.NET 11 預覽版 1:執行階段重大改進,但方向性問題也隨之而來

微軟於二月推出 .NET 11 的首個預覽版,並帶來了執行階段的改進。 Iron Software 團隊近期審閱了 .NET 11 Preview 1,其中有幾項變更值得向 .NET 開發者社群特別說明。

簡而言之

  • Async 已整合至執行階段——速度更快、更為優化,且更易於除錯。 這對我們的通用產品來說是個好消息。
  • CoreCLR 獲得 WASM 支援 — 取代 Mono,因此瀏覽器編譯的 .NET 程式碼應能顯著提升執行速度。
  • 原生 Zstandard 壓縮 - 我們正考慮在 IronZIP 的底層採用此技術。

微軟已正式發布 .NET 11 Preview 1,這是下個標準長期支援(LTS)版本開發週期的首個里程碑,預計於 2026 年 11 月推出。

執行階段層級的非同步:這場悄然發生的重大變革

Preview 1 最重要的更新之一是,非同步追蹤已更深入地整合至執行階段本身,而非完全由編譯器處理。

補充說明:非同步程式設計是一種讓應用程式以非阻塞方式分段執行的模式,因此當等待網路呼叫、檔案讀取或資料庫回應時,整個執行緒不會因此凍結。 這是現代 .NET 開發的基礎。 大多數 API、服務及以使用者介面為導向的工作負載皆高度依賴它。

透過將非同步協調機制更貼近執行階段層,微軟得以同時解決這兩大痛點:

除錯:重建非同步流程。除錯器最終應能追蹤跨越 await 的執行路徑,並恢復目前會遺失的執行上下文。

效能:降低協調開銷。相較於僅依賴編譯器生成的狀態機,執行階段的優化可更為激進,從而降低每項任務的執行成本。

對於分散式服務、雲原生 API 及使用者介面應用程式而言,這將能帶來全面且可量化的改善。

CoreCLR 進軍 WebAssembly

迄今為止,編譯為 WebAssembly 的 .NET 應用程式一直依賴 Mono——這款最初為跨平台相容性所設計的舊版執行環境。 Mono 雖然可行,但其效能限制眾所周知,且未能獲得與 CoreCLR 相同的優化投入。

透過此預覽版,CoreCLR 新增了 WebAssembly 支援,帶來了多項具體改進:JIT 功能提升了執行時的速度。 記憶體管理變得更加高效。 在瀏覽器中執行的 .NET 應用程式,其效能已逐漸逼近原生執行環境。 對於正在開發 Blazor WebAssembly 應用程式或嘗試瀏覽器端 .NET 工作負載的團隊而言,這是整個預覽版中最出色的升級之一。

這對更廣泛的生態系統也至關重要。 針對 WASM 的函式庫與工具,包括基於瀏覽器的文件處理、渲染及資料操作。

原生 Zstandard 壓縮

.NET 11 透過新的 ZstandardStream 實作,新增了對 Zstandard (Zstd) 壓縮演算法的原生支援。 Zstd 已成為高效能系統的標準,因為它不僅提供比 Gzip 更佳的壓縮比,解壓縮速度也顯著更快,且在處理大規模資料時具備強大的吞吐量。

對於函式庫與工具開發者而言,這消除了第三方綁定所帶來的阻礙。 現在,需要大量壓縮的產品可以原生支援 Zstd。 不難看出,這對於 IronZIP 之類的工具,或是同時重視效能與檔案大小的類似工作流程而言,將成為極具價值的底層技術。

更宏觀的趨勢:.NET 向代理式 AI 的轉型

除了執行階段的改進之外,.NET 11 的戰略方向也日趨明朗。 微軟正大力推動其所謂的"代理式 AI"(agentic AI),這類應用程式旨在與 AI 代理、Copilot 工作流程以及結構化模型上下文進行互動。 這包括對 Model Context Protocol 的支援、AI 輔助的開發模式,以及將 .NET Framework 應用程式定位為代理程式可調用與協調的工具之框架。

這樣的方向並不令人意外。 整個產業正朝著 AI 輔助的工作流程邁進,而微軟有充分的動機讓 .NET 在該生態系統中成為一級公民。

此處真正重要的重點

若暫且擱置對路線圖的爭論,純粹聚焦於實際影響,運行時效能的提升才是真正的重點:

  • 對於複雜的程式碼庫而言,非同步除錯終於變得可控
  • 當 CoreCLR 取代 Mono 時,WebAssembly 的效能可能會顯著提升
  • Zstd 壓縮獲得一級支援,消除對第三方套件的依賴

這些並非花俏的功能。 這些工具雖不會在會議主題演講中贏得熱烈掌聲, 但這類改進能悄然降低日常開發的阻力,從長遠來看,其重要性往往遠勝於那些引人注目的主要功能。

預覽版 1 已展現 .NET 生態系統的雙重面貌:強勁且具實質意義的執行階段進展,以及關於語言發展方向與平台優先順序日益熱烈的討論。 這種張力未必是壞事。 這通常意味著該平台正朝著人們真正關心的方向發展。