Delen via


Offlinesynchronisatie voor uw Windows-app inschakelen

Overzicht

In deze zelfstudie leert u hoe u offlineondersteuning toevoegt aan een UWP-app (Universeel Windows-platform) met behulp van een back-end van azure Mobile App. Met offlinesynchronisatie kunnen eindgebruikers communiceren met een mobiele app- en toevoegen of wijzigen van gegevens, zelfs als er geen netwerkverbinding is. Wijzigingen worden opgeslagen in een lokale database. Zodra het apparaat weer online is, worden deze wijzigingen gesynchroniseerd met de externe back-end.

In deze zelfstudie werkt u het UWP-app-project bij vanuit de zelfstudie Een Windows-app maken ter ondersteuning van de offlinefuncties van Azure Mobile Apps. Als u het gedownloade quickstartserverproject niet gebruikt, moet u de extensiepakketten voor gegevenstoegang toevoegen aan uw project. Zie Werken met de .NET-back-endserver-SDK voor Azure Mobile Apps voor meer informatie over serveruitbreidingspakketten.

Zie het onderwerp Offline Data Sync in Azure Mobile Apps voor meer informatie over de functie offlinesynchronisatie.

Vereisten

Voor deze zelfstudie zijn de volgende vereisten vereist:

De client-app bijwerken ter ondersteuning van offlinefuncties

Met offlinefuncties van Azure Mobile App kunt u communiceren met een lokale database wanneer u zich in een offlinescenario bevindt. Als u deze functies in uw app wilt gebruiken, initialiseert u een SyncContext naar een lokaal archief. Verwijs vervolgens naar uw tabel via de interface IMobileServiceSyncTable . SQLite wordt gebruikt als het lokale archief op het apparaat.

  1. Installeer de SQLite-runtime voor de Universeel Windows-platform.

  2. Open in Visual Studio nuGet-pakketbeheer voor het UWP-app-project dat u hebt voltooid in de zelfstudie Een Windows-app maken . Zoek en installeer het NuGet-pakket Microsoft.Azure.Mobile.Client.SQLiteStore .

  3. Klik in Solution Explorer met de rechtermuisknop op Verwijzingen>toevoegen verwijzing...>Universele Windows>Extensies en schakel vervolgens SQLite in voor Universeel Windows-platform en Visual C++ 2015 Runtime voor Universeel Windows-platform-apps.

    SQLite UWP-verwijzing toevoegen

  4. Open het bestand MainPage.xaml.cs en verwijder opmerkingen bij de #define OFFLINE_SYNC_ENABLED definitie.

  5. Druk in Visual Studio op de F5-toets om de client-app opnieuw te bouwen en uit te voeren. De app werkt hetzelfde als voordat u offlinesynchronisatie hebt ingeschakeld. De lokale database wordt nu echter gevuld met gegevens die kunnen worden gebruikt in een offlinescenario.

De app bijwerken om de verbinding met de back-end te verbreken

In deze sectie breekt u de verbinding met de back-end van uw mobiele app om een offlinesituatie te simuleren. Wanneer u gegevensitems toevoegt, wordt in de uitzonderingshandler aangegeven dat de app zich in de offlinemodus bevindt. In deze status worden nieuwe items die zijn toegevoegd in de lokale store en gesynchroniseerd met de back-end van de mobiele app wanneer push vervolgens wordt uitgevoerd in een verbonden status.

  1. Bewerk App.xaml.cs in het gedeelde project. Maak commentaar bij de initialisatie van mobileServiceClient en voeg de volgende regel toe, die gebruikmaakt van een ongeldige URL voor mobiele apps:

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

    U kunt ook offlinegedrag demonstreren door wifi- en mobiele netwerken op het apparaat uit te schakelen of vliegtuigstand te gebruiken.

  2. Druk op F5 om de app te bouwen en uit te voeren. U ziet dat de synchronisatie is mislukt bij vernieuwen wanneer de app is gestart.

  3. Voer nieuwe items in en u ziet dat het pushen mislukt met de status CancelledByNetworkError telkens wanneer u op Opslaan klikt. De nieuwe takenitems bestaan echter in de lokale store totdat ze naar de back-end van de mobiele app kunnen worden gepusht. Als u deze uitzonderingen in een productie-app onderdrukt, gedraagt de client-app zich alsof deze nog steeds is verbonden met de back-end van de mobiele app.

  4. Sluit de app en start deze opnieuw om te controleren of de nieuwe items die u hebt gemaakt, behouden blijven in de lokale store.

  5. (Optioneel) Open Server Explorer in Visual Studio. Navigeer naar uw database in Azure-SQL>Databases. Klik met de rechtermuisknop op uw database en selecteer Openen in SQL Server Objectverkenner. U kunt nu bladeren naar uw SQL-databasetabel en de inhoud ervan. Controleer of de gegevens in de back-enddatabase niet zijn gewijzigd.

  6. (Optioneel) Gebruik een REST-hulpprogramma zoals Fiddler of Postman om een query uit te voeren op uw mobiele back-end met behulp van een GET-query in het formulier https://<your-mobile-app-backend-name>.azurewebsites.net/tables/TodoItem.

Werk de app bij om de back-end van uw mobiele app opnieuw te verbinden

In deze sectie maakt u opnieuw verbinding met de back-end van de mobiele app. Met deze wijzigingen wordt een netwerkherconnectie in de app gesimuleerd.

Wanneer u de toepassing voor het eerst uitvoert, roept InitLocalStoreAsyncde gebeurtenis-handler aanOnNavigatedTo. Deze methode roept SyncAsync op zijn beurt aan om uw lokale archief te synchroniseren met de back-enddatabase. De app probeert te synchroniseren bij het opstarten.

  1. Open App.xaml.cs in het gedeelde project en verwijder de opmerkingen bij de vorige initialisatie van het gebruik van MobileServiceClient de juiste URL van de mobiele app.

  2. Druk op F5 om de app opnieuw te bouwen en uit te voeren. De app synchroniseert uw lokale wijzigingen met de back-end van azure Mobile App met behulp van push- en pull-bewerkingen wanneer de OnNavigatedTo gebeurtenis-handler wordt uitgevoerd.

  3. (Optioneel) Bekijk de bijgewerkte gegevens met behulp van SQL Server Objectverkenner of een REST-hulpprogramma zoals Fiddler. U ziet dat de gegevens zijn gesynchroniseerd tussen de back-enddatabase van azure Mobile App en het lokale archief.

  4. Klik in de app op het selectievakje naast een paar items om deze in de lokale store te voltooien.

    UpdateCheckedTodoItem roept SyncAsync aan om elk voltooid item te synchroniseren met de back-end van de mobiele app. SyncAsync roept zowel push als pull aan. Wanneer u echter een pull uitvoert op basis van een tabel waarnaar de client wijzigingen heeft aangebracht, wordt er altijd automatisch een push uitgevoerd. Dit gedrag zorgt ervoor dat alle tabellen in het lokale archief samen met relaties consistent blijven. Dit gedrag kan leiden tot een onverwachte push. Zie Offline Data Sync in Azure Mobile Apps voor meer informatie over dit gedrag.

API-overzicht

Ter ondersteuning van de offlinefuncties van mobiele services hebben we de IMobileServiceSyncTable-interface gebruikt en MobileServiceClient.SyncContext geïnitialiseerd met een lokale SQLite-database. Wanneer u offline bent, werken de normale CRUD-bewerkingen voor mobiele apps alsof de app nog steeds is verbonden terwijl de bewerkingen plaatsvinden in de lokale store. De volgende methoden worden gebruikt om het lokale archief te synchroniseren met de server:

  • PushAsync Omdat deze methode lid is van IMobileServicesSyncContext, worden wijzigingen in alle tabellen naar de back-end gepusht. Alleen records met lokale wijzigingen worden naar de server verzonden.
  • PullAsync Er wordt een pull gestart vanuit een IMobileServiceSyncTable. Wanneer er bijgehouden wijzigingen in de tabel zijn, wordt een impliciete push uitgevoerd om ervoor te zorgen dat alle tabellen in het lokale archief, samen met relaties consistent blijven. De parameter pushOtherTables bepaalt of andere tabellen in de context worden gepusht in een impliciete push. De queryparameter gebruikt een IMobileServiceTableQuery<T> - of OData-queryreeks om de geretourneerde gegevens te filteren. De parameter queryId wordt gebruikt om incrementele synchronisatie te definiëren. Zie Offline Data Sync in Azure Mobile Apps voor meer informatie.
  • OpschonenAsync Uw app moet deze methode periodiek aanroepen om verouderde gegevens uit het lokale archief te verwijderen. Gebruik de parameter Force wanneer u wijzigingen wilt opschonen die nog niet zijn gesynchroniseerd.

Zie Offline Data Sync in Azure Mobile Apps voor meer informatie over deze concepten.

Meer informatie

De volgende onderwerpen bevatten aanvullende achtergrondinformatie over de offlinesynchronisatiefunctie van Mobile Apps: