根據 InfoQ 的報導,微軟正式發布了 .NET 11 Preview 7 版本,其中針對 .NET MAUI(多平台應用程式使用者介面,一套可讓開發者使用 C# 和 XAML 建立跨平台 App 的框架)進行了多項重大更新。這次更新的核心目標在於提升開發效率、強化安全性以及優化執行效能,特別是在身份驗證機制與開發時的即時反饋方面有顯著進展。
身份驗證機制的現代化:Passkeys 的導入
在安全性方面,最受關注的更新是 MAUI Essentials 中新增的 Passkeys API。Passkeys 是一種基於 FIDO2 標準的密鑰認證技術,旨在取代傳統的密碼,讓使用者能透過生物識別(如指紋或面容識別)或裝置鎖定碼直接登入,有效防止網路釣魚攻擊。
該 API 支援 Android 14 以上、iOS 與 Mac Catalyst 16 以上,以及支援的 Windows 10 版本。開發者可以透過 Passkeys.CreateAsync 進行憑證註冊,並使用 Passkeys.AssertAsync 執行身份驗證,同時利用 Passkeys.IsSupported 確認當前裝置是否支援此功能。
需要注意的是,MAUI 僅負責處理裝置端的 WebAuthn 儀式(即與硬體和作業系統溝通的過程),而伺服器端的責任仍由開發者自行承擔。這意味著後端伺服器必須負責生成挑戰碼(Challenges)、提供標準的 WebAuthn 選項,並驗證回傳的斷言或證明。此外,為了確保安全性,應用程式必須配置正確的信任關係,例如在 Apple 平台設定 Associated Domains 與 App Site Association 檔案,或在 Android 平台設定 Digital Asset Links。
開發流程的飛躍:增量 XAML 熱重載
針對開發體驗,Preview 7 引入了 XAML Incremental Hot Reload(增量 XAML 熱重載)預覽功能,並在 Debug 模式下預設開啟。傳統的熱重載通常需要對整個 XAML 頁面進行重新建構,這在複雜頁面中會導致明顯的延遲或狀態丟失。
新的增量機制結合了來源產生器(Source Generator)與 MetadataUpdateHandler,能夠精準地修改已建立的頁面,而無需全盤重構。其支援的修改範圍相當廣泛,包括屬性變更、子元件的增加或刪除、結構重新排序、附加屬性(Attached Properties)、標記擴展(Markup Extensions)、數據綁定以及 ResourceDictionary 的變更。此功能同樣支援 dotnet watch 指令,讓開發者在修改代碼後能幾乎即時地在設備上看到結果。
導航系統與效能優化
在導航機制上,Shell 導航現在引入了路由模板(Route Templates),其設計概念參考了 ASP.NET Core 與 Blazor 的路由模式。現在路由可以包含必填、可選、預設、受限或全匹配(Catch-all)等路徑片段,例如 product/{sku}。這些參數值會透過現有的 QueryProperty 與 IQueryAttributable 機制傳遞。目前此功能僅支援絕對導航(Absolute Navigation),尚未支援相對導航。
為了提升 AOT(提前編譯,一種將程式碼在執行前先編譯為機器碼以提升速度並減少記憶體佔用的技術)的相容性,XAML 來源產生器擴展了其工作範圍。當 MAUI 能在編譯時解析祖先類型時,RelativeSource AncestorType 的綁定現在可以編譯為 Trim-safe 的強型別綁定(TypedBinding)。這解決了以往依賴反射(Reflection)的字串路徑在經過 Trim(修剪未使用的代碼以縮小體積)後,可能導致成員遺失而崩潰的問題。
架構演進與平台適配
MAUI 持續將舊有的 Renderer(渲染器)遷移至 Handler(處理器)架構。在 iOS 與 Mac Catalyst 平台上,NavigationPage 與 TabbedPage 現在預設使用 Handler。雖然舊的渲染器仍可作為備用方案,但對於有大量自定義渲染需求的應用程式,建議在全面升級前進行充分測試。
此外,Preview 7 為第三方後端提供了更多擴展點。OnPlatform 現在能識別 GTK、macOS 與 WPF,而警告、手勢、Resizetizer 等基礎設施現在開放契約,讓外部後端能透過 NuGet 封裝實現,而不需要直接修改 MAUI 核心代碼。
在平台特定更新方面,Android 開發預設採用 FastDeploy2 策略以加快部署速度,而 dotnet watch 現在支援透過 USB 或 Wi-Fi 對實體 iOS 與 tvOS 設備進行熱重載。Windows 平台則增加了單一實例啟動支援以及 Window.StatusBarTheme 選項。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。