前のトピックは、I/O、デバイス、アプリ モデルのための 移植でした。
UI の背後には、ビジネス レイヤーとデータ レイヤーがあります。 これらのレイヤーのコードは、オペレーティング システムと .NET Framework API (バックグラウンド処理、場所、カメラ、ファイル システム、ネットワーク、その他のデータ アクセスなど) を呼び出します。 その大部分は ユニバーサル Windows プラットフォーム (UWP) アプリで使用できるため、このコードの多くを変更せずに移植できることが期待できます。
非同期メソッド
ユニバーサル Windows プラットフォーム (UWP) の優先事項の 1 つは、真に一貫して応答性の高いアプリを構築できるようにすることです。 アニメーションは常に滑らかで、パンやスワイプなどのタッチ操作は瞬時にラグがなく、UI が指に吸い付いているように感じられます。 これを実現するために、50 ミリ秒以内に完了することを保証できない UWP API はすべて非同期にされ、その名前には Async というサフィックスが付いています。 UI スレッドは Async メソッドの呼び出しからすぐに戻り、作業は別のスレッドで行われます。 Async メソッドの使用は、C# await 演算子、JavaScript promise オブジェクト、および C++ 継続を用いることで、構文的に簡素化されます。 詳細については、「 非同期プログラミング」を参照してください。
バックグラウンド処理
Windows Phone Silverlight アプリでは、管理対象 の ScheduledTaskAgent オブジェクトを使用して、アプリがフォアグラウンドにない間にタスクを実行できます。 UWP アプリでは 、BackgroundTaskBuilder クラスを使用して、同様の方法でバックグラウンド タスクを作成および登録します。 バックグラウンド タスクの作業を実装するクラスを定義します。 システムはバックグラウンド タスクを定期的に実行し、クラスの Run メソッドを呼び出して作業を実行します。 UWP アプリでは、アプリ パッケージ マニフェストで バックグラウンド タスク 宣言を設定することを忘れないでください。 詳細については、「 バックグラウンド タスクでアプリをサポートする」を参照してください。
大きなデータ ファイルをバックグラウンドで転送するために、Windows Phone Silverlight アプリは BackgroundTransferService クラスを使用します。 UWP アプリでは、 Windows.Networking.BackgroundTransfer 名前空間の API を使用してこれを行います。 これらの機能は、同様のパターンを使用して転送を開始しますが、新しい API では機能とパフォーマンスが向上しています。 詳細については、 バックグラウンドでのデータ転送を参照してください。
Windows Phone Silverlight アプリは、 Microsoft.Phone.BackgroundAudio 名前空間のマネージド クラスを使用して、アプリがフォアグラウンドでない間にオーディオを再生します。 UWP では、Windows Phone ストア アプリ モデルを使用します。バックグラウンド オーディオ と バックグラウンド オーディオ サンプルを参照してください。
クラウド サービス、ネットワーク、データベース
クラウドでのデータとアプリ サービスのホスティングは、Azure を使用して可能です。 「Mobile Servicesの開始方法」を参照してください。 オンラインとオフラインの両方のデータを必要とするソリューションについては、「 Mobile Services でのオフライン データ同期の使用」を参照してください。
UWP では System.Net.HttpWebRequest クラスが部分的にサポートされていますが、 System.Net.WebClient クラスはサポートされていません。 将来的な利用を見据えたお勧めの代替案として、Windows.Web.Http.HttpClient クラスを利用してください(または、コードを .NET をサポートする他のプラットフォームに移植する必要がある場合は、System.Net.Http.HttpClient を使用してください)。 これらの API は 、System.Net.Http.HttpRequestMessage を使用して HTTP 要求を表します。
現在、UWP アプリには、基幹業務 (LOB) シナリオなどのデータ集約型シナリオの組み込みサポートは含まれていません。 ただし、ローカル トランザクション データベース サービスには SQLite を使用できます。 詳細については、SQLite を参照してください。
相対 URI ではなく絶対 URI を Windows ランタイム型に渡します。 Windows ランタイムへの URI の渡しを参照してください。
ランチャーとチューザー
ランチャーと Choosers ( Microsoft.Phone.Tasks 名前空間にある) を使用すると、Windows Phone Silverlight アプリはオペレーティング システムと対話して、メールの作成、写真の選択、特定の種類のデータの共有などの一般的な操作を別のアプリと実行できます。 Windows Phone Silverlight
Windows Phone Silverlight アプリは、休止状態にすることも、写真の Chooser タスクなどを使用する場合は廃棄することもできます。 FileOpenPicker クラスを使用している間、UWP アプリはアクティブで実行されたままです。
収益化 (試用モードとアプリ内購入)
Windows Phone Silverlight アプリでは、ほとんどの試用版モードとアプリ内購入機能に UWP CurrentApp クラスを使用できるため、コードを移植する必要はありません。 ただし、Windows Phone Silverlight アプリは MarketplaceDetailTask.Show を呼び出して、購入用のアプリを提供します。
private void Buy()
{
MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
marketplaceDetailTask.ContentType = MarketplaceContentType.Applications;
marketplaceDetailTask.Show();
}
UWP RequestAppPurchaseAsync メソッドを呼び出すコードを移植します。
private async void Buy()
{
await Windows.ApplicationModel.Store.CurrentApp.RequestAppPurchaseAsync(false);
}
テスト目的でアプリの購入機能とアプリ内購入機能をシミュレートするコードがある場合は、それを移植して CurrentAppSimulator クラスを代わりに使用できます。
タイルまたはトーストの更新に関する通知
通知は、Windows Phone Silverlight アプリのプッシュ通知モデルの拡張機能です。 Windows プッシュ通知サービス (WNS) から通知を受け取ると、タイルの更新またはトーストを使用して UI に情報を表示できます。 通知機能の UI 側の移植については、「タイルとトースト」を参照してください。
UWP アプリでの通知の使用の詳細については、「 トースト通知の送信」を参照してください。
C++、C#、または Visual Basic を使用した Windows ランタイム アプリでのタイル、トースト、バッジ、バナー、通知の使用に関する情報とチュートリアルについては、「 タイル、バッジ、トースト通知の操作」を参照してください。
ストレージ (ファイル アクセス)
分離ストレージにキーと値のペアとしてアプリ設定を格納する Windows Phone Silverlight コードは、簡単に移植できます。 Windows Phone Silverlight バージョンの前と後の例を次に示します。
var propertySet = IsolatedStorageSettings.ApplicationSettings;
const string key = "favoriteAuthor";
propertySet[key] = "Charles Dickens";
propertySet.Save();
string myFavoriteAuthor = propertySet.Contains(key) ? (string)propertySet[key] : "<none>";
UWP と同等のもの:
var propertySet = Windows.Storage.ApplicationData.Current.LocalSettings.Values;
const string key = "favoriteAuthor";
propertySet[key] = "Charles Dickens";
string myFavoriteAuthor = propertySet.ContainsKey(key) ? (string)propertySet[key] : "<none>";
Windows.Storage 名前空間のサブセットを使用できますが、多くの Windows Phone Silverlight アプリでは、IsolatedStorageFile クラスでファイル i/o が実行されます。これは、より長くサポートされているためです。 IsolatedStorageFile が使用されていると仮定すると、最初に Windows Phone Silverlight バージョンのファイルの書き込みと読み取りの前後の例を次に示します。
const string filename = "FavoriteAuthor.txt";
using (var store = IsolatedStorageFile.GetUserStoreForApplication())
{
using (var streamWriter = new StreamWriter(store.CreateFile(filename)))
{
streamWriter.Write("Charles Dickens");
}
using (var StreamReader = new StreamReader(store.OpenFile(filename, FileMode.Open, FileAccess.Read)))
{
string myFavoriteAuthor = StreamReader.ReadToEnd();
}
}
UWP を使用するのと同じ機能:
const string filename = "FavoriteAuthor.txt";
var store = Windows.Storage.ApplicationData.Current.LocalFolder;
Windows.Storage.StorageFile file = await store.CreateFileAsync(filename, Windows.Storage.CreationCollisionOption.ReplaceExisting);
await Windows.Storage.FileIO.WriteTextAsync(file, "Charles Dickens");
file = await store.GetFileAsync(filename);
string myFavoriteAuthor = await Windows.Storage.FileIO.ReadTextAsync(file);
Windows Phone Silverlight アプリには、オプションの SD カードへの読み取り専用アクセス権があります。 UWP アプリには、SD カードへの読み取り/書き込みアクセス権があります。 詳細については、「SD カードにアクセスする」を参照してください。
UWP アプリで写真、音楽、ビデオ ファイルにアクセスする方法については、「 音楽、画像、ビデオライブラリのファイルとフォルダー」を参照してください。
詳細については、「 ファイル、フォルダー、およびライブラリ」を参照してください。
次のトピックは、フォーム ファクターと UXのポーティングです。