將 UWP 功能對應到 Windows 應用程式 SDK
本主題比較 UWP 和 Windows 應用程式 SDK 中以不同形式出現的主要功能區域。 此移轉指南中的內容支援從UWP XAML 移至 Windows 應用程式 SDK XAML—移至不同的UI架構,例如 Windows Presentation Foundation (WPF),不在本指南的範圍內。
功能 | UWP | Windows 應用程式 SDK (封包應用程式) | 移轉注意事項 |
---|---|---|---|
包裝 | MSIX 應用程式具有身分識別 |
MSIX 應用程式具有身分識別 |
移轉至 Windows 應用程式 SDK的 UWP 應用程式應該保持在 MSIX 上,以確保受信任的全新安裝和卸載體驗,以及存取所有 API,包括需要身分識別的 API。 |
容器 | 應用程式容器: - 安全性 = LowIL - 檔案系統存取被代理 - 沒有註冊表存取權限 |
MSIX 容器: - 安全性 = MediumIL - 檔案系統存取與使用者相同,AppData 寫入虛擬化 - HKCU 登錄寫入虛擬化 |
使用 Windows 應用程式 SDK 移至較高的完整性層級,可讓您的應用程式具有更大的功能。 不過,如果您想要擴充移轉應用程式的功能以寫入 HKCU 或 AppData,請注意虛擬化。 |
啟動和執行個體化 | 套件身分識別 + CoreApplication 啟用,預設為單一執行個體 | 包標識,Main/WinMain + Windows 應用程式 SDK 啟動,預設多執行個體 | 確保您的應用程式可以處理多執行個體行為,或使用 AppInstance 來管理您的執行個體。 |
生命週期管理 | 暫停/繼續 | 電源/狀態通知 | 您可以使用 Power/State 變更通知來減少系統負載。 |
背景工作 | InProc 和 OOP 背景工作 | InProc COM 和 OOP 背景工作 | 您可以繼續使用您的 OOP 背景工作。 如果應用程式需要與主要進程通訊,請評估 IPC 機制,因為 OOP 背景工作是在 LowIL 中執行,而您的 Windows 應用程式 SDK 主要進程是在 MediumIL 中執行。 任何proc 背景工作都必須移轉至 COM 背景工作,請參閱建立和註冊 winmain COM 背景工作。 如需 C# OOP 背景工作,請參閱使用 C#/WinRT 撰寫 Windows 執行階段元件和背景工作範例。 |
視窗化 | CoreWindow、AppWindow (預覽) | HWND、AppWindow v2 | 視窗化行為在 Windows 應用程式 SDK 中已大幅變更。 請參閱視窗化功能移轉。 |
傳訊 | CoreDispatcher 和 DispatcherQueue | DispatcherQueue、WndProc | DispatcherQueue 支援 Win32 應用程式。 如需從 CoreDispatcher 移至 DispatcherQueue 的其他詳細數據,請參閱 執行緒功能移轉。 |
UI 平台 | 系統 XAML、WebView、DirectX 及其他 | WinUI 3、Webview2、DirectX 及其他 | 如需詳細資訊,請造訪 WinUI 移轉。 |
文字轉譯 | DirectWrite | DWriteCore | 可讓應用程式存取最新 DWrite 功能,並接收與 OS 發行排程分開的新 DWrite 更新。 如需詳細資訊,請參閱 DirectWrite 至 DWriteCore 移轉。 |
資源 | MRT | MRTCore | 如需詳細資訊,請參閱 MRT 至 MRTCore 移轉。 |
.NET 執行階段 | .NET Native / C# 7 | .NET 6+/C# 9 | Windows App SDK 提供對現代 .NET 執行時的造訪,以及對新語言功能的造訪。 不過,.NET ReadyToRun 編譯與 .NET Native 不同,因此您應該評估效能取捨。 |
2D 圖形 | Win2D | Win2D for WinUI 3 | 我們目前正在處理與 Windows 應用程式 SDK 一起運作的 Win2D 版本。 如需詳細資訊,請參閱文件。 |
Windows 執行階段元件 | 適用於UWP的 Windows 執行階段元件專案範本 | - C++:使用 Windows 執行階段元件 (WinUI 3) 專案範本。 - C#:使用 C#/WinRT 在 .NET 類別庫中創作 Windows 執行時間元件。 |
我們目前正在努力支援使用 C#/WinRT 創作 Windows 執行時間元件,以便在 Windows 應用程式 SDK 和 WinUI 3 中使用。 |