Portage des couches de données et d’entreprise Silverlight windows Phone vers UWP

La rubrique précédente portait sur le portage des E/S, des appareils et du modèle d’application.

Derrière votre interface utilisateur, vous trouverez vos couches métier et de données. Le code de ces couches appelle le système d’exploitation et les API .NET Framework (par exemple, traitement en arrière-plan, emplacement, caméra, système de fichiers, réseau et autres accès aux données). La grande majorité de ces applications sont disponibles pour une application plateforme Windows universelle (UWP), ce qui vous permet de pouvoir porter une grande partie de ce code sans modification.

Méthodes asynchrones

L’une des priorités de l’plateforme Windows universelle (UWP) est de vous permettre de créer des applications qui sont véritablement, et de manière cohérente, réactives. Les animations sont toujours lisses, et les interactions tactiles telles que le mouvement panoramique et le balayage sont instantanés et libres de décalage, ce qui rend l’interface utilisateur collée à votre doigt. Pour ce faire, toute API UWP qui ne peut pas garantir la fin dans les 50 ms a été rendue asynchrone et son nom suffixe avec Async. Votre thread d’interface utilisateur retourne immédiatement à partir de l’appel d’une méthode asynchrone , et le travail aura lieu sur un autre thread. L’utilisation d’une méthode Async est très simple, syntactiquement, à l’aide de l’opérateur Await C#, des objets de promesse JavaScript et des continuations C++. Pour plus d’informations, consultez Programmation asynchrone.

Traitement en arrière-plan

Une application Silverlight Windows Phone peut utiliser un objet ScheduledTaskAgent managé pour effectuer une tâche alors que l’application n’est pas au premier plan. Une application UWP utilise la classe BackgroundTaskBuilder pour créer et inscrire une tâche en arrière-plan de la même façon. Vous définissez une classe qui implémente le travail de votre tâche en arrière-plan. Le système exécute régulièrement votre tâche en arrière-plan, appelant la méthode Run de votre classe pour exécuter le travail. 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. Pour plus d’informations, consultez Prendre en charge votre application avec des tâches en arrière-plan.

Pour transférer des fichiers de données volumineux en arrière-plan, une application Silverlight Windows Phone utilise la classe BackgroundTransferService . Une application UWP utilise des API dans l’espace de noms Windows.Networking.BackgroundTransfer pour ce faire. Les fonctionnalités utilisent un modèle similaire pour lancer des transferts, mais la nouvelle API a amélioré les fonctionnalités et les performances. Pour plus d’informations, consultez Transfert de données en arrière-plan.

Une application Silverlight Windows Phone utilise les classes managées dans l’espace de noms Microsoft.Phone.BackgroundAudio pour lire l’audio alors que l’application n’est pas au premier plan. UWP utilise le modèle d’application du Windows Phone Store, consultez l’exemple Audio d’arrière-plan et audio en arrière-plan.

Services cloud, mise en réseau et bases de données

L’hébergement de données et de services d’application dans le cloud est possible à l’aide d’Azure. Consultez Bien démarrer avec Mobile Services. Pour les solutions qui nécessitent des données en ligne et hors connexion, consultez : Utilisation de la synchronisation des données hors connexion dans Mobile Services.

UWP prend en charge partiellement la classe System.Net.HttpWebRequest , mais la classe System.Net.WebClient n’est pas prise en charge. L’alternative recommandée et prospective est la classe Windows.Web.Http.HttpClient (ou System.Net.Http.HttpClient si vous avez besoin que votre code soit portable pour d’autres plateformes qui prennent en charge .NET). Ces API utilisent System.Net.Http.HttpRequestMessage pour représenter une requête HTTP.

Les applications UWP n’incluent actuellement pas la prise en charge intégrée des scénarios gourmands en données, tels que les scénarios métier. Toutefois, vous pouvez utiliser SQLite pour les services de base de données transactionnels locaux. Pour plus d’informations, consultez SQLite.

Passez des URI absolus, et non des URI relatifs, aux types Windows Runtime. Voir Passage d’un URI à Windows Runtime.

Lanceurs et sélecteurs

Avec les lanceurs et les sélecteurs (trouvés dans l’espace de noms Microsoft.Phone.Tasks), une application Silverlight Windows Phone peut interagir avec le système d’exploitation pour effectuer des opérations courantes telles que la composition d’un e-mail, le choix d’une photo ou le partage de certains types de données avec une autre application. Recherchez Microsoft.Phone.Tasks dans la rubrique Silverlight windows Phone vers l’espace de noms Windows 10 et les mappages de classes pour rechercher le type UWP équivalent. Elles vont de mécanismes similaires, appelés lanceurs et sélecteurs, à l’implémentation d’un contrat pour le partage de données entre les applications.

Une application Silverlight Windows Phone peut être placée dans un état dormant ou même tombstoned lors de l’utilisation, par exemple, de la tâche de sélecteur de photos. Une application UWP reste active et en cours d’exécution lors de l’utilisation de la classe FileOpenPicker.

Monétisation (mode d’essai et achats dans l’application)

Une application Silverlight Windows Phone peut utiliser la classe CurrentApp UWP pour la plupart de ses fonctionnalités d’évaluation et d’achat dans l’application, de sorte que le code n’a pas besoin d’être porté. Toutefois, une application Silverlight Windows Phone appelle MarketplaceDetailTask.Show pour offrir l’application à acheter :

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

Port de ce code pour appeler la méthode UWP RequestAppPurchaseAsync :

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

Si vous avez du code qui simule vos fonctionnalités d’achat d’application et d’achat dans l’application à des fins de test, vous pouvez le porter pour utiliser la classe CurrentAppSimulator à la place.

Notifications pour les mises à jour de vignette ou toast

Les notifications sont une extension du modèle de notification Push pour les applications Silverlight Windows Phone. Lorsque vous recevez une notification du service de notification Push Windows (WNS), vous pouvez exposer les informations à l’interface utilisateur avec une mise à jour de vignette ou un toast. Pour porter le côté interface utilisateur de vos fonctionnalités de notification, consultez Vignettes et toasts.

Pour plus d’informations sur l’utilisation des notifications dans une application UWP, consultez Envoi de notifications toast.

Pour plus d’informations et de didacticiels sur l’utilisation de vignettes, de toasts, de badges, de bannières et de notifications dans une application Windows Runtime à l’aide de C++, C# ou Visual Basic, voir Utilisation des vignettes, des badges et des notifications toast.

Stockage (accès aux fichiers)

Le code Silverlight windows Phone qui stocke les paramètres de l’application en tant que paires clé-valeur dans le stockage isolé est facilement porté. Voici un exemple avant et après, d’abord la version Silverlight de Windows Phone :

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

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

Bien qu’un sous-ensemble de l’espace de noms Windows.Storage soit disponible, de nombreuses applications Silverlight Windows Phone effectuent des e/s de fichiers avec la classe IsolatedStorageFile , car elles ont été prises en charge depuis plus longtemps. En supposant que IsolatedStorageFile est utilisé, voici un exemple avant et après de l’écriture et de la lecture d’un fichier, tout d’abord la version Silverlight de Windows Phone :

    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 la même fonctionnalité à l’aide de 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 Windows Phone dispose d’un accès en lecture seule à la carte SD facultative. Une application UWP dispose d’un accès en lecture-écriture à la carte SD. Pour plus d’informations, voir Accéder à la carte SD.

Pour plus d’informations sur l’accès aux photos, à la musique et aux fichiers vidéo dans une application UWP, consultez Fichiers et dossiers dans les bibliothèques Musique, Images et Vidéos.

Pour plus d’informations, consultez Fichiers, dossiers et bibliothèques.

La rubrique suivante consiste à porter pour le facteur de forme et l’expérience utilisateur.