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:
- Visual Studio 2013 spuštěné na Windows 8.1 nebo novějším.
- Dokončení vytvoření aplikace pro Windows
- Azure Mobile Services SQLite Store
- SQLite pro vývoj pro Univerzální platforma Windows
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í.
Nainstalujte modul runtime SQLite pro Univerzální platforma Windows.
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 .
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.
Otevřete soubor MainPage.xaml.cs a odkomentujte definici
#define OFFLINE_SYNC_ENABLED
.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.
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.
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.
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.
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.
(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.
(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 OnNavigatedTo
InitLocalStoreAsync
udá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í.
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.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.(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.
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í aplikaceSyncAsync
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í: