Freigeben über


Aktivieren der Offlinesynchronisierung für Ihre Windows-App

Überblick

In diesem Lernprogramm erfahren Sie, wie Sie einer App für die universelle Windows-Plattform (UWP) mit einem Azure Mobile App-Back-End Offlineunterstützung hinzufügen. Die Offlinesynchronisierung ermöglicht Es Endbenutzern, mit einer mobilen App zu interagieren – selbst wenn keine Netzwerkverbindung besteht. Änderungen werden in einer lokalen Datenbank gespeichert. Sobald das Gerät wieder online ist, werden diese Änderungen mit dem Remote-Back-End synchronisiert.

In diesem Lernprogramm aktualisieren Sie das UWP-App-Projekt aus dem Lernprogramm "Erstellen einer Windows-App ", um die Offlinefeatures von Azure Mobile Apps zu unterstützen. Wenn Sie das heruntergeladene Schnellstartserverprojekt nicht verwenden, müssen Sie dem Projekt die Datenzugriffserweiterungspakete hinzufügen. Weitere Informationen zu Servererweiterungspaketen finden Sie unter Arbeiten mit dem .NET-Back-End-Server-SDK für Azure Mobile Apps.

Weitere Informationen zum Offlinesynchronisierungsfeature finden Sie im Thema Offlinedatensynchronisierung in Azure Mobile Apps.

Anforderungen

Dieses Lernprogramm erfordert die folgenden Voraussetzungen:

Aktualisieren der Client-App zur Unterstützung von Offlinefeatures

Offlinefunktionen von Azure Mobile App ermöglichen ihnen die Interaktion mit einer lokalen Datenbank, wenn Sie sich in einem Offlineszenario befinden. Um diese Features in Ihrer App zu verwenden, initialisieren Sie einen SyncContext in einen lokalen Store. Verweisen Sie dann auf die Tabelle über die IMobileServiceSyncTable-Schnittstelle . SQLite wird als lokaler Speicher auf dem Gerät verwendet.

  1. Installieren Sie die SQLite-Laufzeit für die universelle Windows-Plattform.

  2. Öffnen Sie in Visual Studio den NuGet-Paket-Manager für das UWP-App-Projekt, das Sie im Lernprogramm zum Erstellen einer Windows-App abgeschlossen haben. Suchen und installieren Sie das NuGet-Paket "Microsoft.Azure.Mobile.Client.SQLiteStore NuGet".

  3. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Verweise>hinzufügen...>Universelle Windows-App>Erweiterungen aktivieren dann sowohl SQLite für die universelle Windows-Plattform als auch Visual C++ 2015-Runtime für Apps für die universelle Windows-Plattform.

    Hinzufügen eines SQLite-UWP-Verweises

  4. Öffnen Sie die MainPage.xaml.cs Datei, und entfernen Sie die Kommentare zur #define OFFLINE_SYNC_ENABLED Definition.

  5. Drücken Sie in Visual Studio die F5-TASTE , um die Client-App neu zu erstellen und auszuführen. Die App funktioniert genauso wie zuvor, bevor Sie die Offlinesynchronisierung aktiviert haben. Die lokale Datenbank wird jedoch jetzt mit Daten aufgefüllt, die in einem Offlineszenario verwendet werden können.

Aktualisieren der App, um die Verbindung mit dem Back-End zu trennen

In diesem Abschnitt unterbrechen Sie die Verbindung mit Ihrem Mobilen App-Back-End, um eine Offlinesituation zu simulieren. Wenn Sie Datenelemente hinzufügen, teilt Der Ausnahmehandler Ihnen mit, dass sich die App im Offlinemodus befindet. In diesem Zustand werden neue Elemente, die im lokalen Store hinzugefügt wurden, mit dem mobilen App-Back-End synchronisiert, wenn push als nächstes in einem verbundenen Zustand ausgeführt wird.

  1. Bearbeiten Sie App.xaml.cs im freigegebenen Projekt. Kommentieren Sie die Initialisierung des MobileServiceClient aus, und fügen Sie die folgende Zeile hinzu, die eine ungültige URL für mobile Apps verwendet:

      public static MobileServiceClient MobileService = new MobileServiceClient("https://your-service.azurewebsites.fail");
    

    Sie können auch das Offlineverhalten demonstrieren, indem Sie WLAN und Mobilfunknetze auf dem Gerät deaktivieren oder den Flugzeugmodus verwenden.

  2. Drücken Sie F5 , um die App zu erstellen und auszuführen. Beachten Sie, dass die Synchronisierung bei der Aktualisierung nach dem Start der App fehlgeschlagen ist.

  3. Geben Sie neue Elemente ein, und beachten Sie, dass push bei jedem Klicken auf "Speichern" mit dem Status "CancelledByNetworkError" fehlschlägt. Die neuen Todo-Elemente sind jedoch im lokalen Store vorhanden, bis sie an das mobile App-Back-End übertragen werden können. Wenn Sie diese Ausnahmen in einer Produktions-App unterdrücken, verhält sich die Client-App so, als ob sie weiterhin mit dem mobilen App-Back-End verbunden ist.

  4. Schließen Sie die App, und starten Sie sie neu, um zu überprüfen, ob die von Ihnen erstellten neuen Elemente im lokalen Store beibehalten werden.

  5. (Optional) Öffnen Sie in Visual Studio den Server-Explorer. Navigieren Sie zu Ihrer Datenbank in Azure->SQL-Datenbanken. Klicken Sie mit der rechten Maustaste auf Ihre Datenbank, und wählen Sie im SQL Server-Objekt-Explorer "Öffnen" aus. Jetzt können Sie zu Ihrer SQL-Datenbanktabelle und ihrem Inhalt navigieren. Überprüfen Sie, ob sich die Daten in der Back-End-Datenbank nicht geändert haben.

  6. (Optional) Verwenden Sie ein REST-Tool wie Fiddler oder Postman, um Ihr mobiles Back-End mithilfe einer GET-Abfrage im Formular https://<your-mobile-app-backend-name>.azurewebsites.net/tables/TodoItemabzufragen.

Aktualisieren Sie die App, um ihr Mobiles App-Backend erneut zu verbinden.

In diesem Abschnitt verbinden Sie die App erneut mit dem mobilen App-Back-End. Diese Änderungen simulieren eine erneute Netzwerkverbindung in der App.

Wenn Sie die Anwendung zum ersten Mal ausführen, ruft der OnNavigatedTo Ereignishandler InitLocalStoreAsyncauf. Diese Methode ruft wiederum SyncAsync auf, um Ihren lokalen Speicher mit der Back-End-Datenbank zu synchronisieren. Die App versucht, beim Start zu synchronisieren.

  1. Öffnen Sie App.xaml.cs im freigegebenen Projekt, und entfernen Sie die Kommentare zur vorherigen Initialisierung von MobileServiceClient, um die richtige URL der mobilen App zu verwenden.

  2. Drücken Sie F5 , um die App neu zu erstellen und auszuführen. Die App synchronisiert Ihre lokalen Änderungen mit dem Azure Mobile App-Back-End mithilfe von Push- und Pullvorgängen, wenn der OnNavigatedTo Ereignishandler ausgeführt wird.

  3. (Optional) Zeigen Sie die aktualisierten Daten mithilfe des SQL Server-Objekt-Explorers oder eines REST-Tools wie Fiddler an. Beachten Sie, dass die Daten zwischen der Back-End-Datenbank der Azure Mobile App und dem lokalen Speicher synchronisiert wurden.

  4. Klicken Sie in der App auf das Kontrollkästchen neben einigen Elementen, um sie im lokalen Store abzuschließen.

    UpdateCheckedTodoItem ruft SyncAsync auf, um jedes abgeschlossene Element mit dem Mobilen App-Back-End zu synchronisieren. SyncAsync ruft sowohl Push als auch Pull auf. Wenn Sie jedoch einen Pull für eine Tabelle ausführen, an der der Client Änderungen vorgenommen hat, wird ein Push immer automatisch ausgeführt. Dieses Verhalten stellt sicher, dass alle Tabellen im lokalen Speicher zusammen mit Beziehungen konsistent bleiben. Dieses Verhalten kann zu einem unerwarteten Push führen. Weitere Informationen zu diesem Verhalten finden Sie unter Offlinedatensynchronisierung in Azure Mobile Apps.

API-Zusammenfassung

Um die Offlinefeatures mobiler Dienste zu unterstützen, haben wir die IMobileServiceSyncTable-Schnittstelle und initialisierte MobileServiceClient.SyncContext mit einer lokalen SQLite-Datenbank verwendet. Wenn sie offline sind, funktionieren die normalen CRUD-Vorgänge für mobile Apps so, als ob die App weiterhin verbunden ist, während die Vorgänge für den lokalen Store ausgeführt werden. Die folgenden Methoden werden verwendet, um den lokalen Speicher mit dem Server zu synchronisieren:

  • PushAsync Da es sich bei dieser Methode um ein Element von IMobileServicesSyncContext handelt, werden Änderungen in allen Tabellen an das Back-End übertragen. Nur Datensätze mit lokalen Änderungen werden an den Server gesendet.
  • PullAsync Ein Pull wird von einer IMobileServiceSyncTable gestartet. Wenn nachverfolgte Änderungen in der Tabelle vorhanden sind, wird ein impliziter Push ausgeführt, um sicherzustellen, dass alle Tabellen im lokalen Speicher zusammen mit Beziehungen konsistent bleiben. Der Parameter pushOtherTables steuert, ob andere Tabellen im Kontext in einem impliziten Push übertragen werden. Der Abfrageparameter verwendet eine IMobileServiceTableQuery<T> - oder OData-Abfragezeichenfolge, um die zurückgegebenen Daten zu filtern. Der QueryId-Parameter wird verwendet, um die inkrementelle Synchronisierung zu definieren. Weitere Informationen finden Sie unter Offlinedatensynchronisierung in Azure Mobile Apps.
  • PurgeAsync Ihre App sollte diese Methode regelmäßig aufrufen, um veraltete Daten aus dem lokalen Speicher zu löschen. Verwenden Sie den Force-Parameter , wenn Sie änderungen löschen müssen, die noch nicht synchronisiert wurden.

Weitere Informationen zu diesen Konzepten finden Sie unter Offlinedatensynchronisierung in Azure Mobile Apps.

Weitere Informationen

Die folgenden Themen enthalten zusätzliche Hintergrundinformationen zum Offlinesynchronisierungsfeature mobiler Apps: