Portage des couches métier et des couches de données de Silverlight pour Windows Phone vers UWPPorting Windows Phone Silverlight business and data layers to UWP

Rubrique précédente : Portage pour le modèle d’E/S, d’appareil et d’application.The previous topic was Porting for I/O, device, and app model.

Derrière votre interface utilisateur se trouvent les couches métier et les couches de données.Behind your UI are your business and data layers. Le code de ces couches appelle le système d’exploitation et les API .NET Framework (par exemple, pour le traitement en arrière-plan, l’emplacement, l’appareil photo, le système de fichiers, le réseau et l’accès à d’autres données).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). La grande majorité de ces éléments sont disponibles pour une application de plateforme Windows universelle (UWP). Vous pouvez donc espérer être en mesure de porter la plus grande partie de ce code sans avoir à le modifier.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.

Méthodes asynchronesAsynchronous methods

L’une des priorités de la plateforme Windows universelle (UWP) consiste à vous permettre de générer des applications qui réagissent efficacement et de manière cohérente.One of the priorities of the Universal Windows Platform (UWP) is to enable you to build apps that are truly, and consistently, responsive. Les animations sont toujours fluides, et les interactions tactiles (telles que le balayage et les mouvements panoramiques) sont instantanées, sans retard, ce qui donne le sentiment que l’interface utilisateur ne fait qu’un avec votre doigt.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. Pour ce faire, toute API UWP qui ne peut pas garantir qu’elle s’exécutera en 50 millisecondes maximum est rendue asynchrone ; son nom comprend le suffixe suivant : 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. Votre thread d’interface utilisateur réapparaît immédiatement suite à l’appel d’une méthode Async ; le travail est alors effectué sur un autre thread.Your UI thread will return immediately from calling an Async method, and the work will take place on another thread. L’utilisation d’une méthode Async a été facilitée via l’optimisation de la syntaxe, au moyen de l’opérateur C# await, des objets de promesse JavaScript et des continuations C++.Consuming an Async method is made very easy, syntactically, using the C# await operator, JavaScript promise objects, and C++ continuations. Pour en savoir plus, voir Programmation asynchrone.For more info, see Asynchronous programming.

Traitement en arrière-planBackground processing

Une application Silverlight pour Windows Phone peut utiliser un objet ScheduledTaskAgent managé pour effectuer une tâche lorsque l’application n’est pas affichée au premier plan.A Windows Phone Silverlight app can use a managed ScheduledTaskAgent object to perform a task while the app is not in the foreground. Une application UWP utilise la classe BackgroundTaskBuilder pour créer et enregistrer une tâche en arrière-plan de la même façon.A UWP app uses the BackgroundTaskBuilder class to create and register a background task in a similar way. Vous définissez une classe qui implémente le travail effectué par votre tâche en arrière-plan.You define a class that implements the work of your background task. Le système exécute régulièrement votre tâche en arrière-plan, en appelant la méthode Run de votre classe pour exécuter le travail.The system runs your background task periodically, calling the Run method of your class to execute the work. Dans une application UWP, n’oubliez pas de définir la déclaration Tâches en arrière-plan dans le manifeste du package d’application.In a UWP app, remember to set the Background Tasks declaration in the app package manifest. Pour plus d’informations, voir Définir des tâches en arrière-plan pour les besoins de votre application.For more info, see Support your app with background tasks.

Pour transférer des fichiers de données volumineux en arrière-plan, une application Silverlight pour Windows Phone utilise la classe BackgroundTransferService.To transfer large data files in the background, a Windows Phone Silverlight app uses the BackgroundTransferService class. Pour ce faire, une application UWP utilise des API dans l’espace de noms Windows. Networking. BackgroundTransfer .A UWP app uses APIs in the Windows.Networking.BackgroundTransfer namespace to do this. Les fonctions utilisent un modèle semblable pour lancer des transferts, mais la nouvelle API présente des performances et fonctionnalités optimisées.The features use a similar pattern to initiate transfers, but the new API has improved capabilities and performance. Pour en savoir plus, voir Transfert de données en arrière-plan.For more info, see Transferring data in the background.

Une application Silverlight pour Windows Phone utilise les classes managées de l’espace de noms Microsoft.Phone.BackgroundAudio pour lire les données audio alors que l’application n’est pas au premier plan.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 utilise le modèle d’application Windows Phone Store. Voir Contenu audio en arrière-plan et l’exemple Contenu audio en arrière-plan.The UWP uses the Windows Phone Store app model, see Background Audio and the Background audio sample.

Services cloud, mise en réseau et bases de donnéesCloud services, networking, and databases

L’hébergement de services de données et d’application dans le cloud est possible par le biais de la plateforme Azure.Hosting data and app services in the cloud is possible using Azure. Voir Prise en main de Mobile Services.See Getting Started with Mobile Services. Pour les solutions qui nécessitent à la fois des données en ligne et des données hors connexion, voir Utilisation de la synchronisation des données hors connexion dans Mobile Services.For solutions that require both online and offline data see: Using offline data sync in Mobile Services.

UWP offre une prise en charge partielle de la classe System.Net.HttpWebRequest, mais ne prend pas en charge la classe System.Net.WebClient.The UWP has partial support for the System.Net.HttpWebRequest class, but the System.Net.WebClient class is not supported. L’alternative prospective recommandée est la classe Windows.Web.Http.HttpClient (ou System.Net.Http.HttpClient si vous avez besoin que votre code soit portable vers d’autres plateformes prenant en charge .NET).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). Ces API utilisent System.Net.Http.HttpRequestMessage pour représenter une requête HTTP.These APIs use System.Net.Http.HttpRequestMessage to represent an HTTP request.

À l’heure actuelle, les applications UWP ne prennent pas en charge les scénarios qui impliquent une utilisation intensive des données, notamment les scénarios métier.UWP apps do not currently include built-in support for data-intensive scenarios such as line of business (LOB) scenarios. Toutefois, vous pouvez utiliser SQLite pour gérer les services de base de données transactionnelle en local.However, you can make use SQLite for local transactional database services. Pour plus d’informations, voir SQLite.For more info, see SQLite.

Transmettez les URI absolus, et non relatifs, aux types Windows Runtime.Pass absolute URIs, not relative URIs, to Windows Runtime types. Voir Transmission d’un URI au Windows Runtime.See Passing a URI to the Windows Runtime.

Lanceurs et sélecteursLaunchers and Choosers

Grâce aux lanceurs et aux sélecteurs (qui figurent dans l’espace de noms Microsoft.Phone.Tasks), une application Silverlight pour Windows Phone peut interagir avec le système d’exploitation pour effectuer des opérations courantes (composition d’un e-mail, sélection d’une photo ou partage de différents types de données avec une autre application, par exemple).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. Recherchez l’élément Microsoft.Phone.Tasks dans la rubrique Mappages des espaces de noms et des classes de Silverlight pour Windows Phone vers Windows 10 pour trouver le type UWP équivalent.Search for Microsoft.Phone.Tasks in the topic Windows Phone Silverlight to Windows 10 namespace and class mappings to find the equivalent UWP type. Ces éléments vont des mécanismes du même ordre (lanceurs et sélecteurs) à l’implémentation d’un contrat de partage de données entre applications.These range from similar mechanisms, called launchers and pickers, to implementing a contract for sharing data between apps.

Une application Silverlight pour Windows Phone peut être placée à l’état dormant, voire désactivée, même si vous utilisez la tâche de sélecteur de photos, par exemple.A Windows Phone Silverlight app can be put into a dormant state or even tombstoned when using, for example, the photo Chooser task. Une application UWP reste active et en cours d’exécution lors de l’utilisation de la classe FileOpenPicker .A UWP app remains active and running while using the FileOpenPicker class.

Monétisation (mode d’évaluation et achats dans l’application)Monetization (trial mode and in-app purchases)

Une application Windows Phone Silverlight peut utiliser la classe UWP CurrentApp pour la plupart de ses fonctionnalités de mode d’évaluation et d’achat dans l’application, de sorte que le code n’a pas besoin d’être porté.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. Toutefois, une application Silverlight pour Windows Phone appelle l’élément MarketplaceDetailTask.Show pour proposer l’application à l’achat :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();
    }

Port auquel le code appelle la méthode REQUESTAPPPURCHASEASYNC UWP :Port that code to call the UWP RequestAppPurchaseAsync method:

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

Si vous avez du code qui simule votre achat d’application et les fonctionnalités d’achat dans l’application à des fins de test, vous pouvez alors le porter pour utiliser la classe CurrentAppSimulator à la place.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 relatives aux mises à jour de vignette ou toastNotifications for tile or toast updates

Les notifications sont une extension du modèle de notifications Push pour les applications Silverlight pour Windows Phone.Notifications are an extension of the push notification model for Windows Phone Silverlight apps. Lorsque vous recevez une notification provenant des services de notifications Push Windows (WNS), vous pouvez faire apparaître les informations sur l’interface utilisateur, avec une mise à jour de vignette ou avec un toast.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. Pour le portage du côté de l’interface utilisateur dédié à vos fonctionnalités de notification, voir Vignettes et toasts.For porting the UI side of your notification features, see Tiles and toasts.

Pour plus d’informations sur l’utilisation des notifications dans une application UWP, voir Envoi de notifications toast.For more details on the use of notifications in a UWP app, see Sending toast notifications.

Pour obtenir des informations et des didacticiels sur l’utilisation des vignettes, des toasts, des badges, des bannières et des notifications dans une application Windows Runtime utilisant C++, C# ou Visual Basic, voir Utilisation de vignettes, de badges et de notifications toast.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.

Stockage (accès aux fichiers)Storage (file access)

Le code Silverlight pour Windows Phone qui stocke des paramètres d’application sous forme de paires clé-valeur dans le stockage isolé est porté facilement.Windows Phone Silverlight code that stores app settings as key-value pairs in isolated storage is easily ported. Voici un exemple de type avant/après. Tout d’abord, la version Silverlight pour Windows Phone :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>";

Et son équivalent 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>";

Bien qu’un sous-ensemble de l’espace de noms Windows.Storage soit mis à leur disposition, de nombreuses applications Silverlight pour Windows Phone effectuent les E/S de fichiers avec la classe IsolatedStorageFile, car elle est prise en charge depuis plus longtemps.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. Si l’on part du principe que l’élément IsolatedStorageFile est utilisé, voici un exemple d’écriture et de lecture d’un fichier (avant et après l’opération), dans la version Silverlight pour Windows Phone pour commencer :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();
        }
    }

Et son équivalent pour 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);

Une application Silverlight pour Windows Phone dispose d’un accès en lecture seule à la carte mémoire Secure Digital en option.A Windows Phone Silverlight app has read-only access to the optional SD card. Une application UWP présente quant à elle un accès en lecture et en écriture à la carte mémoire Secure Digital.A UWP app has read-write access to the SD card. Pour plus d’informations, voir Accéder à la carte SD.For more info, see Access the SD card.

Pour plus d’informations sur l’accès aux fichiers photo, musique et vidéo dans une application UWP, voir Fichiers et dossiers dans les bibliothèques de musique, d’images et de vidéos.For info about accessing photos, music, and video files in a UWP app, see Files and folders in the Music, Pictures, and Videos libraries.

Pour plus d’informations, voir Fichiers, dossiers et bibliothèques.For more info, see Files, folders, and libraries.

Rubrique suivante : Portage pour différents facteurs de forme et expériences utilisateur.The next topic is Porting for form factor and UX.