Portieren Windows Phone Silverlight-Geschäfts- und Datenebenen zu UWP
Das vorherige Thema war portieren für E/A, Gerät und App-Modell.
Hinter der Benutzeroberfläche befinden sich Ihre Geschäfts- und Datenebenen. Der Code in diesen Ebenen ruft Betriebssystem- und .NET Framework-APIs auf (z. B. Hintergrundverarbeitung, Standort, Kamera, Dateisystem, Netzwerk und anderer Datenzugriff). Die meisten dieser Apps sind für eine Universelle Windows-Plattform-App (UWP) verfügbar, sodass Sie davon ausgehen können, dass Sie einen Großteil dieses Codes ohne Änderung portieren können.
Asynchrone Methoden
Eine der Prioritäten der Universelle Windows-Plattform (UWP) besteht darin, Apps zu erstellen, die wirklich und konsistent reaktionsfähig sind. Animationen sind immer reibungslos, und Touchinteraktionen wie Schwenken und Wischen sind sofort und frei von Verzögerungen, sodass sie sich so anfühlen, als ob die Benutzeroberfläche an den Finger geklebt ist. Um dies zu erreichen, wurde jede UWP-API, die nicht garantieren kann, innerhalb von 50 ms asynchron und mit Async versehenen Namen erstellt. Ihr UI-Thread wird sofort vom Aufrufen einer Async-Methode zurückgegeben, und die Arbeit findet in einem anderen Thread statt. Die Verwendung einer Async-Methode ist sehr einfach, syntaktisch, mit dem C# -Await-Operator , JavaScript-Zusageobjekten und C++-Fortsetzungen. Weitere Informationen finden Sie unter "Asynchrone Programmierung".
Hintergrundverarbeitung
Eine Windows Phone Silverlight-App kann ein verwaltetes ScheduledTaskAgent-Objekt verwenden, um eine Aufgabe auszuführen, während sich die App nicht im Vordergrund befindet. Eine UWP-App verwendet die BackgroundTaskBuilder-Klasse , um eine Hintergrundaufgabe auf ähnliche Weise zu erstellen und zu registrieren. Sie definieren eine Klasse, die die Arbeit Ihrer Hintergrundaufgabe implementiert. Das System führt ihre Hintergrundaufgabe regelmäßig aus und ruft die Run-Methode Ihrer Klasse auf, um die Arbeit auszuführen. Denken Sie in einer UWP-App daran, die Deklaration der Hintergrundaufgaben im App-Paketmanifest festzulegen. Weitere Informationen finden Sie unter "Unterstützen Ihrer App mit Hintergrundaufgaben".
Um große Datendateien im Hintergrund zu übertragen, verwendet eine Windows Phone Silverlight-App die BackgroundTransferService-Klasse . Dazu verwendet eine UWP-App APIs im Windows.Networking.BackgroundTransfer-Namespace. Die Features verwenden ein ähnliches Muster, um Übertragungen zu initiieren, aber die neue API verfügt über verbesserte Funktionen und Leistung. Weitere Informationen finden Sie unter Übertragen von Daten im Hintergrund.
Eine Windows Phone Silverlight-App verwendet die verwalteten Klassen im Microsoft.Phone.BackgroundAudio-Namespace , um Audio wiederzugeben, während sich die App nicht im Vordergrund befindet. Die UWP verwendet das Windows Phone Store-App-Modell, siehe Hintergrundaudio und Das Hintergrundaudiobeispiel .
Clouddienste, Netzwerke und Datenbanken
Das Hosten von Daten und App-Diensten in der Cloud ist mithilfe von Azure möglich. Weitere Informationen finden Sie unter "Erste Schritte mit Mobile Services". Lösungen, für die sowohl Online- als auch Offlinedaten erforderlich sind, finden Sie unter: Verwenden der Offlinedatensynchronisierung in Mobile Services.
Die UWP unterstützt teilweise die System.Net.HttpWebRequest-Klasse, die System.Net.WebClient-Klasse wird jedoch nicht unterstützt. Die empfohlene, zukunftsorientierte Alternative ist die Windows.Web.Http.HttpClient-Klasse (oder System.Net.Http.HttpClient, wenn Sie Ihren Code auf anderen Plattformen portieren müssen, die .NET unterstützen). Diese APIs verwenden System.Net.Http.HttpRequestMessage , um eine HTTP-Anforderung darzustellen.
UWP-Apps enthalten derzeit keine integrierte Unterstützung für datenintensive Szenarien wie Branchenszenarien. Sie können SQLite jedoch für lokale Transaktionsdatenbankdienste verwenden. Weitere Informationen finden Sie unter SQLite.
Übergeben Sie absolute URIs, nicht relative URIs, an Windows-Runtime Typen. Siehe Übergeben eines URI an die Windows-Runtime.
Startprogramme und Auswahlprogramme
Mit Launchern und Auswahlern (im Namespace "Microsoft.Phone.Tasks ") kann eine Windows Phone Silverlight-App mit dem Betriebssystem interagieren, um allgemeine Vorgänge auszuführen, z. B. das Verfassen einer E-Mail, das Auswählen eines Fotos oder das Freigeben bestimmter Arten von Daten für eine andere App. Suchen Sie im Thema Windows Phone Silverlight zu Windows 10-Namespaces und Klassenzuordnungen nach Microsoft.Phone.Tasks, um den entsprechenden UWP-Typ zu finden. Diese reichen von ähnlichen Mechanismen, sogenannten Start- und Auswahlmechanismen, bis hin zur Implementierung eines Vertrags zum Freigeben von Daten zwischen Apps.
Eine Windows Phone Silverlight-App kann bei Verwendung der Fotoauswahlaufgabe in einen ruhenden Zustand versetzt oder sogar versteinert werden. Eine UWP-App bleibt aktiv und wird während der Verwendung der FileOpenPicker-Klasse ausgeführt.
Monetisierung (Testmodus und In-App-Käufe)
Eine Windows Phone Silverlight-App kann die UWP CurrentApp-Klasse für die meisten Ihrer Testmodus- und In-App-Kauffunktionen verwenden, sodass Code nicht portiert werden muss. Eine Windows Phone Silverlight-App ruft jedoch MarketplaceDetailTask.Show auf, um die App zum Kauf anzubieten:
private void Buy()
{
MarketplaceDetailTask marketplaceDetailTask = new MarketplaceDetailTask();
marketplaceDetailTask.ContentType = MarketplaceContentType.Applications;
marketplaceDetailTask.Show();
}
Portieren Sie diesen Code, um die UWP RequestAppPurchaseAsync-Methode aufzurufen:
private async void Buy()
{
await Windows.ApplicationModel.Store.CurrentApp.RequestAppPurchaseAsync(false);
}
Wenn Sie Code haben, der Ihre App-Kauf- und In-App-Kauffeatures zu Testzwecken simuliert, können Sie diese portieren, um stattdessen die CurrentAppSimulator-Klasse zu verwenden.
Benachrichtigungen für Kachel- oder Popupupdates
Benachrichtigungen sind eine Erweiterung des Pushbenachrichtigungsmodells für Windows Phone Silverlight-Apps. Wenn Sie eine Benachrichtigung vom Windows-Pushbenachrichtigungsdienst (Windows Push Notification Service, WNS) erhalten, können Sie die Informationen auf der Benutzeroberfläche mit einer Kachelaktualisierung oder mit einem Popup anzeigen. Informationen zum Portieren der UI-Seite Ihrer Benachrichtigungsfeatures finden Sie unter Kacheln und Popups.
Weitere Informationen zur Verwendung von Benachrichtigungen in einer UWP-App finden Sie unter Senden von Popupbenachrichtigungen.
Informationen und Lernprogramme zur Verwendung von Kacheln, Popups, Signalen, Bannern und Benachrichtigungen in einer Windows-Runtime App mit C++, C# oder Visual Basic finden Sie unter Arbeiten mit Kacheln, Signalen und Popupbenachrichtigungen.
Speicher (Dateizugriff)
Windows Phone Silverlight-Code, der App-Einstellungen als Schlüsselwertpaare im isolierten Speicher speichert, ist einfach portiert. Hier ist ein Vor- und Nachher-Beispiel, zuerst die 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>";
Und die UWP-Entsprechung:
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>";
Obwohl eine Teilmenge des Windows.Storage-Namespace für sie verfügbar ist, führen viele Windows Phone Silverlight-Apps datei i/o mit der IsolatedStorageFile-Klasse aus, da sie länger unterstützt wurde. Wenn davon ausgegangen wird, dass IsolatedStorageFile verwendet wird, finden Sie hier ein Vor- und Nachher-Beispiel zum Schreiben und Lesen einer Datei, zuerst die 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();
}
}
Und die gleiche Funktionalität mit der 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);
Eine Windows Phone Silverlight-App verfügt über schreibgeschützten Zugriff auf die optionale SD-Karte. Eine UWP-App verfügt über Lese-/Schreibzugriff auf die SD-Karte. Weitere Informationen finden Sie unter Zugreifen auf die SD-Karte.
Informationen zum Zugreifen auf Fotos, Musik und Videodateien in einer UWP-App finden Sie unter "Dateien und Ordner" in den Bibliotheken "Musik", "Bilder" und "Videos".
Weitere Informationen finden Sie unter "Dateien", "Ordner" und "Bibliotheken".
Das nächste Thema ist das Portieren für Formfaktor und UX.