将 UWP 功能映射到 Windows App SDK
本主题比较主要功能区域在 UWP 和 Windows App SDK 中的不同显示形式。 本迁移指南中的内容支持从 UWP XAML 迁移到 Windows App SDK XAML - 迁移到其他 UI 框架(例如 Windows Presentation Foundation (WPF))不在本指南的范围内。
功能 | UWP | Windows App SDK(打包应用) | 迁移说明 |
---|---|---|---|
打包 | MSIX 应用具有标识 |
MSIX 应用具有标识 |
迁移到 Windows App SDK 的 UWP 应用应保留在 MSIX 上,以确保获得可信的全新安装和卸载体验,以及对所有 API(包括需要标识的 API)的访问权限。 |
容器 | 应用容器: - 安全性 = LowIL - 文件系统访问中转 - 无注册表访问权限 |
MSIX 容器: - 安全性 = MediumIL - 文件系统访问与用户相同,AppData 写入虚拟化 - HKCU 注册表写入虚拟化 |
通过使用 Windows App SDK 迁移到更高的完整性级别,可让应用具有更强大的功能。 但是,如果要扩展已迁移应用程序的功能以写入 HKCU 或 AppData,请注意虚拟化。 |
激活和实例化 | 包标识 + CoreApplication 激活,默认为单实例 | 包标识,Main/WinMain + Windows App SDK 激活,默认为多实例 | 确保应用程序可以处理多实例行为,或使用 AppInstance 来管理实例。 |
生命周期管理 | 暂停/恢复 | 电源/状态通知 | 可以使用电源/状态更改通知来减少系统负载。 |
后台任务 | InProc 和 OOP 后台任务 | Inproc COM 和 OOP 后台任务 | 可以继续使用 OOP 后台任务。 如果应用需要与主进程通信,请评估 IPC 机制,因为 OOP 后台任务在 LowIL 下运行,而 Windows App SDK 主进程在 MediumIL 下运行。 所有 inproc 后台任务都需要迁移到 COM 后台任务 - 请参阅创建和注册 winmain COM 后台任务。 有关 C# OOP 后台任务,请参阅使用 C#/WinRT 创作 Windows 运行时组件和后台任务示例。 |
窗口化 | CoreWindow、AppWindow(预览版) | HWND、AppWindow v2 | Windows App 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 | 适用于 WinUI 3 的 Win2D | 我们目前正在开发适用于 Windows App SDK 的 Win2D 版本。 有关详细信息,请参阅文档。 |
Windows 运行时组件 | 适用于 UWP 的 Windows 运行时组件项目模板 | - C++:使用 Windows 运行时组件 (WinUI 3) 项目模板。 - C#:使用 C#/WinRT 在 .NET 类库中创作 Windows 运行时组件。 |
目前,我们正致力于支持使用 C#/WinRT 创作 Windows 运行时组件,以便在 Windows App SDK 和 WinUI 3 中进行使用。 |