Conversione di livelli di dati e business di Silverlight Phone Windows a UWP

L'argomento precedente era Conversione per I/O, dispositivo e modello di app.

Dietro l'interfaccia utente ci sono i livelli aziendali e di dati. Il codice in questi livelli chiama le API del sistema operativo e .NET Framework (ad esempio, elaborazione in background, posizione, fotocamera, file system, rete e altro accesso ai dati). La maggior parte di queste funzionalità è disponibile per un'app UWP (Universal Windows Platform), in modo da poter convertire gran parte di questo codice senza modifiche.

Metodi asincroni

Una delle priorità della piattaforma UWP (Universal Windows Platform) consiste nell'abilitare la creazione di app realmente reattive e coerenti. Le animazioni sono sempre fluide e le interazioni tramite tocco, ad esempio la panoramica e lo scorrimento rapido, sono istantanee e libere da ritardo, rendendo l'interfaccia utente incollata al dito. A tale scopo, qualsiasi API UWP che non può garantire il completamento entro 50 ms è stata resa asincrona e il relativo nome suffisso con Async. Il thread dell'interfaccia utente verrà restituito immediatamente dalla chiamata di un metodo asincrono e il lavoro verrà eseguito su un altro thread. L'uso di un metodo asincrono è reso molto semplice, sintattico, usando l'operatore C# await, gli oggetti promise JavaScript e le continuazioni C++. Per altre informazioni, vedere Programmazione asincrona.

Elaborazione in background

Un'app di Windows Phone Silverlight può usare un oggetto ScheduledTaskAgent gestito per eseguire un'attività mentre l'app non è in primo piano. Un'app UWP usa la classe BackgroundTaskBuilder per creare e registrare un'attività in background in modo simile. Si definisce una classe che implementa il lavoro dell'attività in background. Il sistema esegue periodicamente l'attività in background, chiamando il metodo Run della classe per eseguire il lavoro. In un'app UWP ricordarsi di impostare la dichiarazione Attività in background nel manifesto del pacchetto dell'app. Per ulteriori informazioni, vedere Supportare l'app con le attività in background.

Per trasferire file di dati di grandi dimensioni in background, un'app di Windows Phone Silverlight usa la classe BackgroundTransferService. A tale scopo, un'app UWP usa le API nello spazio dei nomi Windows.Networking.BackgroundTransfer. Le funzionalità usano un modello simile per avviare i trasferimenti, ma la nuova API offre funzionalità e prestazioni migliorate. Per altre info, vedere Trasferimento dei dati in background.

Un'app di Windows Phone Silverlight usa le classi gestite nello spazio dei nomi Microsoft.Phone.BackgroundAudio per riprodurre l'audio mentre l'app non è in primo piano. La piattaforma UWP usa il modello di app di Windows Phone Store, vedere Audio in background e l'esempio audio in background.

Servizi cloud, rete e database

L'hosting di dati e servizi app nel cloud è possibile usando Azure. Vedere Introduzione a Mobile Services Per le soluzioni che richiedono dati online e offline, vedere: Uso della sincronizzazione dei dati offline in Servizi mobili.

La piattaforma UWP include il supporto parziale per la classe System.Net.HttpWebRequest , ma la classe System.Net.WebClient non è supportata. L'alternativa consigliata per il futuro è la classe Windows.Web.Http.HttpClient (o System.Net.Http.HttpClient se è necessario che il codice sia portabile in altre piattaforme che supportano .NET). Queste API usano System.Net.Http.HttpRequestMessage per rappresentare una richiesta HTTP.

Le app UWP non includono attualmente il supporto predefinito per scenari a elevato utilizzo di dati, ad esempio scenari line-of-business (LOB). È tuttavia possibile usare SQLite per i servizi di database transazionali locali. Per altre informazioni, vedere SQLite.

Passare gli URI assoluti, non gli URI relativi, ai tipi Windows Runtime. Vedere Passaggio di un URI a Windows Runtime.

Utilità di avvio e selezione

Con utilità di avvio e strumenti di selezione (disponibili nello spazio dei nomi Microsoft.Phone.Tasks), un'app di Windows Phone Silverlight può interagire con il sistema operativo per eseguire operazioni comuni, ad esempio la composizione di un messaggio di posta elettronica, la scelta di una foto o la condivisione di determinati tipi di dati con un'altra app. Cercare Microsoft.Phone.Tasks nell'argomento Windows Phone Silverlight allo spazio dei nomi e ai mapping delle classi di Windows 10 per trovare il tipo UWP equivalente. Questi vanno da meccanismi simili, denominati utilità di avvio e selezione, all'implementazione di un contratto per la condivisione dei dati tra le app.

Un'app di Windows Phone Silverlight può essere inserita in uno stato inattivo o persino rimossa quando si usa, ad esempio, l'attività di selezione foto. Un'app UWP rimane attiva e in esecuzione durante l'uso della classe FileOpenPicker.

Monetizzazione (modalità di valutazione e acquisti in-app)

Un'app di Windows Phone Silverlight può usare la classe UWP CurrentApp per la maggior parte della modalità di valutazione e della funzionalità di acquisto in-app, in modo che il codice non debba essere convertito. Tuttavia, un'app di Windows Phone Silverlight chiama MarketplaceDetailTask.Show per offrire l'app per l'acquisto:

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

Convertire il codice per chiamare il metodo UWP RequestAppPurchaseAsync:

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

Se hai codice che simula le funzionalità di acquisto e acquisto in-app dell'app a scopo di test, puoi convertirlo per usare invece la classe CurrentAppSimulator.

Notifiche per gli aggiornamenti di riquadri o avvisi popup

Le notifiche sono un'estensione del modello di notifica push per le app di Windows Phone Silverlight. Quando si riceve una notifica da Windows Push Notification Service (WNS), è possibile visualizzare le informazioni all'interfaccia utente con un aggiornamento del riquadro o con un avviso popup. Per convertire il lato interfaccia utente delle funzionalità di notifica, vedere Riquadri e avvisi popup.

Per altre informazioni sull'uso delle notifiche in un'app UWP, vedere Invio di notifiche di tipo avviso popup.

Per informazioni ed esercitazioni sull'uso di riquadri, avvisi popup, badge, banner e notifiche in un'app di Windows Runtime con C++, C# o Visual Basic, vedere Uso di riquadri, badge e notifiche di tipo avviso popup.

Archiviazione (accesso ai file)

Il codice Windows Phone Silverlight che archivia le impostazioni dell'app come coppie chiave-valore nello spazio di archiviazione isolato viene facilmente convertito. Di seguito è riportato un esempio precedente e successivo, prima la versione di 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>";

E l'equivalente 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>";

Sebbene sia disponibile un subset dello spazio dei nomi Windows.Storage, molte app di Windows Phone Silverlight eseguono file i/o con la classe IsolatedStorageFile perché è stata supportata per più tempo. Supponendo che sia in uso Isolated Archiviazione File, ecco un esempio precedente e successivo di scrittura e lettura di un file, prima di tutto la versione di 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();
        }
    }

E le stesse funzionalità che usano la piattaforma 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);

Un'app di Windows Phone Silverlight ha accesso in sola lettura alla scheda SD facoltativa. Un'app UWP ha accesso in lettura/scrittura alla scheda SD. Vedere Accedere alla scheda SD per altre informazioni.

Per informazioni sull'accesso a foto, musica e file video in un'app UWP, vedere File e cartelle nelle raccolte di Musica, immagini e video.

Per altre informazioni, vedere File e cartelle e librerie.

L'argomento successivo è Conversione per fattore di forma e esperienza utente.