UWP に Windows Phone Silverlight のビジネス データおよびデータ層の移植Porting Windows Phone Silverlight business and data layers to UWP

前のトピックは、「入出力、デバイス、アプリ モデルの移植」でした。The previous topic was Porting for I/O, device, and app model.

UI の背後には、ビジネス レイヤーとデータ レイヤーがあります。Behind your UI are your business and data layers. こうしたレイヤーのコードでは、オペレーティング システムと .NET Framework API (たとえば、バックグラウンド処理、場所、カメラ、ファイル システム、ネットワーク、その他のデータ アクセスなど) を呼び出します。The code in these layers calls operating system and .NET Framework APIs (for example, background processing, location, the camera, the file system, network, and other data access). その大半がユニバーサル Windows プラットフォーム (UWP) アプリで利用可能であり、したがって変更なくこのコードの大半を移植できると考えられます。The vast majority of those are available to a Universal Windows Platform (UWP) app, so you can expect to be able to port much of this code without change.

非同期メソッドAsynchronous methods

ユニバーサル Windows プラットフォーム (UWP) で優先されることの 1 つは、真に一貫して応答性が高いアプリを構築できるようにすることです。One of the priorities of the Universal Windows Platform (UWP) is to enable you to build apps that are truly, and consistently, responsive. アニメーションは常にスムーズで、パンやスワイプなどのタッチ操作は遅延なく瞬時であり、UI が指に密着するように感じさせます。Animations are always smooth, and touch interactions such as panning and swiping are instantaneous and free of lag, making it feel like the UI is glued to your finger. これを実現するために、50 ミリ秒以内の完了が保証できないすべての UWP API は非同期になり、名前の後に Async が付加されています。To achieve this, any UWP API that can't guarantee to complete within 50ms has been made asynchronous and its name suffixed with Async. UI スレッドは、Async メソッドの呼び出し後に直ちに戻り、別のスレッドで処理を実行します。Your UI thread will return immediately from calling an Async method, and the work will take place on another thread. Async メソッドの使用は、構文的に非常に簡単であり、C# の await 演算子、JavaScript promise オブジェクト、C++ 後続タスクを使います。Consuming an Async method is made very easy, syntactically, using the C# await operator, JavaScript promise objects, and C++ continuations. 詳しくは、「非同期プログラミング」をご覧ください。For more info, see Asynchronous programming.

バックグラウンド処理Background processing

Windows Phone Silverlight アプリを使用してマネージできますScheduledTaskAgentアプリがフォア グラウンドにないときにタスクを実行するオブジェクト。A Windows Phone Silverlight app can use a managed ScheduledTaskAgent object to perform a task while the app is not in the foreground. UWP アプリでは、同様の方法でバックグラウンド タスクを作成、登録するために BackgroundTaskBuilder クラスを使います。A UWP app uses the BackgroundTaskBuilder class to create and register a background task in a similar way. バックグラウンド タスクの処理を実装するクラスを定義します。You define a class that implements the work of your background task. システムでは、バックグラウンド タスクを定期的に実行し、処理を実行するクラスの Run メソッドを呼び出します。The system runs your background task periodically, calling the Run method of your class to execute the work. UWP アプリでは、アプリ パッケージ マニフェストでバックグラウンド タスクの宣言を忘れずに設定します。In a UWP app, remember to set the Background Tasks declaration in the app package manifest. 詳しくは、「バックグラウンド タスクによるアプリのサポート」をご覧ください。For more info, see Support your app with background tasks.

Windows Phone Silverlight アプリを使用して、バック グラウンドでの大きなデータ ファイルを転送する、 BackgroundTransferServiceクラス。To transfer large data files in the background, a Windows Phone Silverlight app uses the BackgroundTransferService class. UWP アプリは、このために Windows.Networking.BackgroundTransfer 名前空間の API を使います。A UWP app uses APIs in the Windows.Networking.BackgroundTransfer namespace to do this. 機能は同様のパターンを使って転送を開始しますが、新しい API では機能と性能が向上しています。The features use a similar pattern to initiate transfers, but the new API has improved capabilities and performance. 詳しくは、「バックグラウンドでのデータの転送」をご覧ください。For more info, see Transferring data in the background.

Windows Phone Silverlight アプリでのマネージ クラスを使用して、 Microsoft.Phone.BackgroundAudioフォア グラウンドでアプリの中にオーディオを再生する名前空間がないです。A Windows Phone Silverlight app uses the managed classes in the Microsoft.Phone.BackgroundAudio namespace to play audio while the app is not in the foreground. UWP は Windows Phone ストア アプリ モデルを使います。詳しくは、「バックグラウンド オーディオ」およびバックグラウンド オーディオのサンプルをご覧ください。The UWP uses the Windows Phone Store app model, see Background Audio and the Background audio sample.

クラウド サービス、ネットワーク、データベースCloud services, networking, and databases

Azure を使ってクラウドでデータとアプリ サービスをホストできます。Hosting data and app services in the cloud is possible using Azure. Mobile Services の使用」をご覧ください。See Getting Started with Mobile Services. オンラインとオフラインの両方のデータを必要とするソリューションを参照してください。Mobile Services でのオフライン データ同期を使用してします。For solutions that require both online and offline data see: Using offline data sync in Mobile Services.

UWP は System.Net.HttpWebRequest クラスを部分的にサポートしていますが、System.Net.WebClient クラスはサポートされていません。The UWP has partial support for the System.Net.HttpWebRequest class, but the System.Net.WebClient class is not supported. お勧めできる将来的な代替案は、Windows.Web.Http.HttpClient クラス (または、.NET をサポートする他のプラットフォームにコードを移植可能にする場合は System.Net.Http.HttpClient) です。The recommended, forward-looking alternative is the Windows.Web.Http.HttpClient class (or System.Net.Http.HttpClient if you need your code to be portable to other platforms that support .NET). これらの API では、System.Net.Http.HttpRequestMessage を使って HTTP 要求を表します。These APIs use System.Net.Http.HttpRequestMessage to represent an HTTP request.

UWP アプリには、現在、大量のデータ アクセスを実行するシナリオ (基幹業務 (LOB) シナリオなど) を対象としたサポートは組み込まれていません。UWP apps do not currently include built-in support for data-intensive scenarios such as line of business (LOB) scenarios. ただし、ローカル トランザクション データベース サービスのために SQLite を使うことができます。However, you can make use SQLite for local transactional database services. 詳しくは、「SQLite」をご覧ください。For more info, see SQLite.

相対 URI ではなく絶対 URI を Windows ランタイム型に渡します。Pass absolute URIs, not relative URIs, to Windows Runtime types. Windows ランタイムへの URI の引き渡し」をご覧ください。See Passing a URI to the Windows Runtime.

ランチャーとセレクターLaunchers and Choosers

ランチャー、チューザーと (で見つかった、 Microsoft.Phone.Tasks名前空間)、Windows Phone Silverlight アプリ、写真を選択する、電子メールの構成などの一般的な操作を実行するオペレーティング システムと通信することができますか別のアプリとは、特定の種類のデータを共有します。With Launchers and Choosers (found in the Microsoft.Phone.Tasks namespace), a Windows Phone Silverlight app can interact with the operating system to perform common operations such as composing an email, choosing a photo, or sharing certain kinds of data with another app. 検索Microsoft.Phone.Tasks 、トピックの「 Windows 10 の名前空間とクラス マッピングを Windows Phone Silverlight UWP 同等型が見つかりません。Search for Microsoft.Phone.Tasks in the topic Windows Phone Silverlight to Windows 10 namespace and class mappings to find the equivalent UWP type. これには、ランチャーおよびピッカーと呼ばれる同様のメカニズムから、アプリ間でデータを共有するコントラクトの実装に至るまで、一連の型が含まれます。These range from similar mechanisms, called launchers and pickers, to implementing a contract for sharing data between apps.

Windows Phone Silverlight アプリを配置できるに休止状態または廃棄も、たとえば、写真の選択タスクを使用する場合。A Windows Phone Silverlight app can be put into a dormant state or even tombstoned when using, for example, the photo Chooser task. UWP アプリは、FileOpenPicker クラスの使用中はアクティブで実行中のままになります。A UWP app remains active and running while using the FileOpenPicker class.

収益化 (試用モードとアプリ内購入)Monetization (trial mode and in-app purchases)

Windows Phone Silverlight アプリが、UWP を使用できます CurrentApp クラスの試用版モードとアプリ内のほとんどは、機能を購入できるように、コードを移植する必要はありません。A Windows Phone Silverlight app can use the UWP CurrentApp class for most of its trial mode and in-app purchase functionality, so that code doesn't need to be ported. しかし、Windows Phone Silverlight アプリを呼び出すMarketplaceDetailTask.Show購入アプリを提供します。But, a Windows Phone Silverlight app calls MarketplaceDetailTask.Show to offer the app for purchase:

    private void Buy()
    {
        MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
        marketplaceDetailTask.ContentType = MarketplaceContentType.Applications;
        marketplaceDetailTask.Show();
    }

UWP の  RequestAppPurchaseAsync メソッドを呼び出すコードを移植します。Port that code to call the UWP RequestAppPurchaseAsync method:

    private async void Buy()
    {
        await Windows.ApplicationModel.Store.CurrentApp.RequestAppPurchaseAsync(false);
    }

テスト目的のためにアプリ購入機能およびアプリ内購入機能をシミュレートするコードがある場合は、代わりに CurrentAppSimulator クラスを使うようにこのコードを移植できます。If you have code that simulates your app purchase and in-app purchase features for testing purposes, then you can port that to use the CurrentAppSimulator class instead.

タイルまたはトーストの更新通知Notifications for tile or toast updates

通知は、Windows Phone Silverlight アプリにプッシュ通知のモデルの拡張機能です。Notifications are an extension of the push notification model for Windows Phone Silverlight apps. Windows プッシュ通知サービス (WNS) から通知を受信した場合、タイル更新またはトーストにより UI にこの情報を提示できます。When you receive a notification from the Windows Push Notification Service (WNS), you can surface the info to the UI with a tile update or with a toast. 通知機能の UI 側の移植については、「タイルとトースト」をご覧ください。For porting the UI side of your notification features, see Tiles and toasts.

UWP アプリで通知を使う方法について詳しくは、「トースト通知の送信」をご覧ください。For more details on the use of notifications in a UWP app, see Sending toast notifications.

C++、C#、または Visual Basic を使った Windows ランタイム アプリでのタイル、トースト、バッジ、バナー、通知の使用についての情報とチュートリアルは、「タイル、バッジ、トースト通知の操作」をご覧ください。For info and tutorials on using tiles, toasts, badges, banners, and notifications in a Windows Runtime app using C++, C#, or Visual Basic, see Working with tiles, badges, and toast notifications.

ストレージ (ファイル アクセス)Storage (file access)

分離ストレージ内のキー/値ペアとしてアプリの設定を格納する Windows Phone Silverlight コードは簡単に移植します。Windows Phone Silverlight code that stores app settings as key-value pairs in isolated storage is easily ported. ここで例を示します前に、と後、最初に、Windows Phone の Silverlight バージョン。Here is a before-and-after example, first the Windows Phone Silverlight version:

    var propertySet = IsolatedStorageSettings.ApplicationSettings;
    const string key = "favoriteAuthor";
    propertySet[key] = "Charles Dickens";
    propertySet.Save();
    string myFavoriteAuthor = propertySet.Contains(key) ? (string)propertySet[key] : "<none>";

次に相当する UWP の要素を示します。And the UWP equivalent:

    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 アプリの実行ファイルの i/o、 IsolatedStorageFileクラスではサポートされているため長くなります。Although a subset of the Windows.Storage namespace is available to them, many Windows Phone Silverlight apps perform file i/o with the IsolatedStorageFile class because it has been supported for longer. 仮定IsolatedStorageFileが記述して、まず、Windows Phone の Silverlight バージョンのファイルの読み取りの前に、と後例を示します。 使用されています。Assuming that IsolatedStorageFile is being used, here's a before-and-after example of writing and reading a file, first the Windows Phone Silverlight version:

    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 を使う同じ機能です。And the same functionality using the 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 カードに読み取り専用のアクセスを持ちます。A Windows Phone Silverlight app has read-only access to the optional SD card. UWP アプリは、オプションの SD カードに読み取り専用のアクセスを行います。A UWP app has read-write access to the SD card. 詳しくは、「SD カードへのアクセス」をご覧ください。For more info, see Access the SD card.

UWP アプリでの写真、音楽、ビデオ ファイルへのアクセスについて詳しくは、「ミュージック、画像、およびビデオ ライブラリのファイルとフォルダー」をご覧ください。For info about accessing photos, music, and video files in a UWP app, see Files and folders in the Music, Pictures, and Videos libraries.

詳しくは、「ファイル、フォルダー、およびライブラリ」をご覧ください。For more info, see Files, folders, and libraries.

次のトピックは、「フォーム ファクターと UX の移植」です。The next topic is Porting for form factor and UX.