Sdílet prostřednictvím


Zapnutí offline synchronizace u aplikace pro Windows

Přehled

V tomto kurzu se dozvíte, jak do aplikace Univerzální platforma Windows (UPW) přidat offline podporu pomocí back-endu mobilní aplikace Azure. Offline synchronizace umožňuje koncovým uživatelům pracovat s mobilní aplikací– prohlížením, přidáváním nebo úpravou dat – i když připojení k síti neexistuje. Změny se ukládají v místní databázi. Jakmile je zařízení zpátky online, tyto změny se synchronizují se vzdáleným back-endem.

V tomto kurzu aktualizujete projekt aplikace UPW z kurzu Vytvoření aplikace pro Windows tak, aby podporoval offline funkce Azure Mobile Apps. Pokud stažený projekt rychlého startu nepoužíváte, musíte do projektu přidat balíčky rozšíření přístupu k datům. Další informace o balíčcích rozšíření serveru najdete v tématu Práce se sadou SDK back-endového serveru .NET pro Azure Mobile Apps.

Další informace o funkci offline synchronizace najdete v tématu Offline synchronizace dat v Azure Mobile Apps.

Požadavky

Tento kurz vyžaduje následující požadavky:

Aktualizace klientské aplikace tak, aby podporovala offline funkce

Offline funkce mobilní aplikace Azure umožňují pracovat s místní databází, když jste v offline scénáři. Pokud chcete tyto funkce v aplikaci používat, inicializujete SyncContext do místního úložiště. Pak na tabulku odkazujte prostřednictvím rozhraní IMobileServiceSyncTable . SQLite se používá jako místní úložiště na zařízení.

  1. Nainstalujte modul runtime SQLite pro Univerzální platforma Windows.

  2. V sadě Visual Studio otevřete správce balíčků NuGet pro projekt aplikace UPW, který jste dokončili v kurzu Vytvoření aplikace pro Windows . Vyhledejte a nainstalujte balíček NuGet Microsoft.Azure.Mobile.Client.SQLiteStore .

  3. V Průzkumník řešení klikněte pravým tlačítkem myši na Odkazy>Přidat odkaz...>Univerzální windows>Rozšíření a potom povolte SQLite pro Univerzální platforma Windows i Visual C++ 2015 Runtime pro aplikace Univerzální platforma Windows.

    Přidání odkazu na UPW SQLite

  4. Otevřete soubor MainPage.xaml.cs a odkomentujte definici #define OFFLINE_SYNC_ENABLED .

  5. V sadě Visual Studio znovu sestavte a spusťte klientskou aplikaci stisknutím klávesy F5 . Aplikace funguje stejně jako předtím, než jste povolili offline synchronizaci. Místní databáze se ale teď naplní daty, která je možné použít v offline scénáři.

Aktualizace aplikace tak, aby se odpojila od back-endu

V této části přerušíte připojení k back-endu mobilní aplikace a simulujete offline situaci. Když přidáte datové položky, obslužná rutina výjimky vám řekne, že aplikace je v offline režimu. V tomto stavu se nové položky přidané v místním úložišti a budou synchronizované s back-endem mobilní aplikace při dalším spuštění v připojeném stavu.

  1. Upravte app.xaml.cs ve sdíleném projektu. Zakomentujte inicializaci MobileServiceClient a přidejte následující řádek, který používá neplatnou adresu URL mobilní aplikace:

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

    Můžete také předvést offline chování zakázáním wifi a mobilních sítí na zařízení nebo používáním režimu v letadle.

  2. Stisknutím klávesy F5 sestavte a spusťte aplikaci. Všimněte si, že synchronizace se po spuštění aplikace nepovedla při aktualizaci.

  3. Zadejte nové položky a všimněte si, že nabízená oznámení selže se stavem CancelledByNetworkError pokaždé, když kliknete na Uložit. Nové položky úkolů však existují v místním obchodě, dokud je nebude možné odeslat do back-endu mobilní aplikace. Pokud v produkční aplikaci potlačíte tyto výjimky, klientská aplikace se chová, jako by byla stále připojená k back-endu mobilní aplikace.

  4. Zavřete aplikaci a restartujte ji, abyste ověřili, že nové položky, které jste vytvořili, se uchovávají v místním úložišti.

  5. (Volitelné) V sadě Visual Studio otevřete Průzkumníka serveru. Přejděte do databáze ve služběAzure-SQL> Databases. Klikněte pravým tlačítkem na databázi a vyberte Otevřít v SQL Server Průzkumník objektů. Teď můžete procházet tabulku databáze SQL a její obsah. Ověřte, že se data v back-endové databázi nezměnila.

  6. (Volitelné) K dotazování mobilního back-endu použijte nástroj REST, jako je Fiddler nebo Postman, pomocí dotazu GET ve formuláři https://<your-mobile-app-backend-name>.azurewebsites.net/tables/TodoItem.

Aktualizace aplikace pro opětovné připojení back-endu mobilní aplikace

V této části znovu připojíte aplikaci k back-endu mobilní aplikace. Tyto změny simulují opětovné připojení k síti v aplikaci.

Při prvním spuštění aplikace volá obslužná rutina OnNavigatedToInitLocalStoreAsyncudálosti . Tato metoda zase volá SyncAsync synchronizaci místního úložiště s back-endovou databází. Aplikace se pokusí synchronizovat při spuštění.

  1. Otevřete App.xaml.cs ve sdíleném projektu a odkomentujte předchozí inicializaci MobileServiceClient a použijte správnou adresu URL mobilní aplikace.

  2. Stisknutím klávesy F5 znovu sestavte a spusťte aplikaci. Aplikace synchronizuje místní změny s back-endem mobilní aplikace Azure pomocí operací push a pull při OnNavigatedTo spuštění obslužné rutiny události.

  3. (Volitelné) Zobrazte aktualizovaná data pomocí SQL Server Průzkumník objektů nebo nástroje REST, jako je Fiddler. Všimněte si, že data se synchronizují mezi back-endovou databází mobilní aplikace Azure a místním úložištěm.

  4. V aplikaci kliknutím na zaškrtávací políčko vedle několika položek je dokončete v místním obchodě.

    UpdateCheckedTodoItem volání SyncAsync pro synchronizaci všech dokončených položek s back-endem mobilní aplikace SyncAsync volá nabízení i přijetí změn. Kdykoli ale provedete přijetí změn v tabulce, do které klient provedl změny, bude nabízená oznámení vždy spuštěna automaticky. Toto chování zajišťuje, že všechny tabulky v místním úložišti spolu s relacemi zůstanou konzistentní. Toto chování může vést k neočekávanému nasdílení změn. Další informace o tomto chování najdete v tématu Offline synchronizace dat v Azure Mobile Apps.

Souhrn rozhraní API

K podpoře offline funkcí mobilních služeb jsme použili rozhraní IMobileServiceSyncTable a inicializovali MobileServiceClient.SyncContext s místní databází SQLite. Při offline režimu fungují běžné operace CRUD pro Mobile Apps, jako kdyby byla aplikace stále připojená, zatímco k operacím dochází v místním úložišti. K synchronizaci místního úložiště se serverem slouží následující metody:

  • PushAsync Vzhledem k tomu, že tato metoda je členem IMobileServicesSyncContext, změny ve všech tabulkách se nasdílí do back-endu. Na server se odesílají jenom záznamy s místními změnami.
  • PullAsync Vyžádání změn se spustí z IMobileServiceSyncTable. Pokud jsou v tabulce sledované změny, spustí se implicitní nabízení, aby všechny tabulky v místním úložišti spolu s relacemi zůstaly konzistentní. Parametr pushOtherTables určuje, jestli se ostatní tabulky v kontextu nasdílí implicitně. Parametr dotazu přebírá řetězec dotazu IMobileServiceTableQuery<T> nebo OData k filtrování vrácených dat. Parametr queryId slouží k definování přírůstkové synchronizace. Další informace najdete v tématu Offline synchronizace dat v Azure Mobile Apps.
  • PurgeAsync Aplikace by měla tuto metodu pravidelně volat, aby se vyprázdnily zastaralá data z místního úložiště. Pokud potřebujete vyprázdnit všechny změny, které ještě nebyly synchronizovány, použijte parametr force .

Další informace o těchto konceptech najdete v tématu Offline synchronizace dat v Azure Mobile Apps.

Další informace

Následující témata obsahují další informace o funkci offline synchronizace mobilních aplikací: