Windows App SDK への UWP 機能のマッピング
このトピックでは、UWP と Windows App SDK に表示されるさまざまな形式の主要な機能領域を比較します。 この移行ガイドの内容は、UWP XAML から Windows App SDK XAML への移行に対応しています。Windows Presentation Foundation (WPF) などの別の UI フレームワークへの移行は、このガイダンスの範囲外となります。
機能 | UWP | Windows App SDK (パッケージ アプリ) | 移行のメモ |
---|---|---|---|
パッケージ化 | MSIX アプリに ID がある |
MSIX アプリに ID がある |
Windows App SDK に移行する UWP アプリは、信頼できるクリーン インストール/アンインストール エクスペリエンスと、ID を必要とするものを含めたすべての API へのアクセスを実現するために、常に MSIX を使用する必要があります。 |
コンテナー | アプリ コンテナー: - セキュリティ = LowIL - ファイル システム アクセスが仲介される - レジストリ アクセスなし |
MSIX コンテナー: - セキュリティ = MediumIL - ユーザーと同じファイル システム アクセス、AppData 書き込みを仮想化 - HKCU レジストリ書き込みを仮想化 |
Windows App SDK を使用してより高い整合性レベルに移行すると、アプリの機能を向上させることができます。 ただし、移行したアプリケーションの機能を拡張して、HKCU または AppData に書き込む場合は、仮想化に注意してください。 |
アクティブ化とインスタンス化 | パッケージ ID + CoreApplication のアクティブ化、既定で単一インスタンス化 | パッケージ ID、Main/WinMain + Windows App SDK のアクティブ化、既定で複数インスタンス化 | アプリケーションで複数インスタンスの動作を処理できることを確認するか、AppInstance を使用してインスタンスを管理します。 |
ライフサイクル管理 | 一時停止/再開 | 電源/状態通知 | 電源/状態の変更通知を使用して、システム負荷を軽減できます。 |
バックグラウンド タスク | インプロセスおよび OOP バックグラウンド タスク | インプロセス COM および OOP バックグラウンド タスク | OOP バックグラウンド タスクを引き続き使用できます。 OOP バックグラウンド タスクは LowIL で実行され、Windows App SDK メイン プロセスは MediumIL で実行されているので、アプリでメイン プロセスへの通信が必要な場合は、IPC メカニズムを評価します。 インプロセス バックグラウンド タスクは、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 プラットフォーム | System XAML、WebView、DirectX など | WinUI 3、Webview2、DirectX など | 詳細については、「WinUI の移行」を参照してください。 |
テキストレンダリング | DirectWrite | DWriteCore | アプリケーションが最新の DWrite 機能にダウンレベルでアクセスし、OS リリース スケジュールとは別に新しい DWrite 更新プログラムを受信できるようにします。 詳細については、「DirectWrite から DWriteCore への移行」を参照してください。 |
リソース | MRT | MRTCore | 詳細については、「MRT から MRT Core への移行」を参照してください。 |
.NET ランタイム | .NET Native/C# 7 | .NET 6+/C# 9 | Windows アプリ SDK では、最新の .NET ランタイムと新しい言語機能にアクセスできます。 ただし、.NET ReadyToRun コンパイルは .NET Native と異なるので、パフォーマンスのトレードオフを評価する必要があります。 |
2D グラフィックス | Win2D | WinUI 3 用 Win2D | Microsoft では、現在、Windows App SDK で動作する Win2D のバージョンへの取り組みを進めています。 詳細については、ドキュメントを参照してください。 |
Windows ランタイム コンポーネント | UWP 用の Windows ランタイム コンポーネント プロジェクト テンプレート | - C++: Windows ランタイム コンポーネント (WinUI 3) プロジェクト テンプレートを使用します。 - C#: C#/WinRT を使用して、.NET クラス ライブラリ の Windows ランタイム コンポーネントを作成します。 |
現在、Windows アプリ SDK および WinUI 3 で使用するために、C#/WinRT を使用して Windows ランタイム コンポーネントを作成するためのサポートに取り組んでいます。 |
参照
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
Windows developer