Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
- Android
- Cordova
- iOS
- Windows
- Xamarin.Android
- Xamarin.Forms
- Xamarin.iOS
Przegląd
W tym samouczku pokazano, jak dodać obsługę trybu offline do aplikacji platformy uniwersalnej systemu Windows (UWP) przy użyciu zaplecza aplikacji mobilnej platformy Azure. Synchronizacja w trybie offline umożliwia użytkownikom końcowym interakcję z aplikacjami mobilnymi — wyświetlanie, dodawanie lub modyfikowanie danych — nawet jeśli nie ma połączenia sieciowego. Zmiany są przechowywane w lokalnej bazie danych. Po powrocie urządzenia do trybu online te zmiany są synchronizowane ze zdalnym zapleczem.
W tym samouczku zaktualizujesz projekt aplikacji platformy UWP z samouczka Tworzenie aplikacji systemu Windows w celu obsługi funkcji trybu offline usługi Azure Mobile Apps. Jeśli nie używasz pobranego projektu serwera Szybki start, musisz dodać pakiety rozszerzeń dostępu do danych do projektu. Aby uzyskać więcej informacji na temat pakietów rozszerzeń serwera, zobacz Work with the .NET backend server SDK for Azure Mobile Apps.
Aby dowiedzieć się więcej na temat funkcji synchronizacji offline, zobacz temat Offline Data Sync w usłudze Azure Mobile Apps.
Wymagania
Ten samouczek wymaga następujących wymagań wstępnych:
- Program Visual Studio 2013 uruchomiony w systemie Windows 8.1 lub nowszym.
- Ukończenie Tworzenie aplikacji systemu Windows.
- Sklep SQLite usługi mobilne Azure
- SQLite dla uniwersalnej platformy Windows
Aktualizowanie aplikacji klienckiej w celu obsługi funkcji w trybie offline
Funkcje trybu offline aplikacji mobilnej Platformy Azure umożliwiają interakcję z lokalną bazą danych w scenariuszu offline. Aby użyć tych funkcji w aplikacji, należy zainicjować SyncContext w sklepie lokalnym. Następnie odwołaj się do tabeli za pomocą interfejsu IMobileServiceSyncTable. SqLite jest używany jako magazyn lokalny na urządzeniu.
Zainstaluj środowisko uruchomieniowe SQLite dla platformy uniwersalnej systemu Windows.
W programie Visual Studio otwórz menedżera pakietów NuGet dla projektu aplikacji platformy UWP, który ukończyłeś w samouczku Tworzenie aplikacji systemu Windows. Wyszukaj i zainstaluj pakiet NuGet Microsoft.Azure.Mobile.Client.SQLiteStore.
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy Odwołania>Dodaj odwołanie...>rozszerzenia uniwersalnego systemu Windows>, a następnie włącz zarówno SQLite for Universal Windows Platform, jak i środowisko uruchomieniowe Visual C++ 2015 dla aplikacji platformy uniwersalnej systemu Windows.
Otwórz plik MainPage.xaml.cs i usuń komentarz z definicji
#define OFFLINE_SYNC_ENABLED
.W programie Visual Studio naciśnij F5, aby ponownie skompilować i uruchomić aplikację kliencka. Aplikacja działa tak samo jak przed włączeniem synchronizacji w trybie offline. Jednak lokalna baza danych jest teraz wypełniana danymi, które mogą być używane w scenariuszu offline.
Zaktualizuj aplikację, aby rozłączyć się z backendem
W tej sekcji przerywasz połączenie z zapleczem aplikacji mobilnej, aby symulować sytuację w trybie offline. Po dodaniu elementów danych program obsługi wyjątków informuje, że aplikacja jest w trybie offline. W tym stanie nowe elementy, które zostaną dodane do lokalnego magazynu, będą zsynchronizowane z zapleczem aplikacji mobilnej przy następnym uruchomieniu synchronizacji, gdy aplikacja jest w stanie połączonym.
Edytuj App.xaml.cs w udostępnionym projekcie. Zakomentuj inicjalizację MobileServiceClient i dodaj następującą linię, która korzysta z nieprawidłowego adresu URL aplikacji mobilnej.
public static MobileServiceClient MobileService = new MobileServiceClient("https://your-service.azurewebsites.fail");
Możesz również zademonstrować zachowanie w trybie offline, wyłączając sieć Wi-Fi i sieci komórkowe na urządzeniu lub korzystając z trybu samolotowego.
Naciśnij F5, aby skompilować i uruchomić aplikację. Zwróć uwagę, że synchronizacja nie powiodła się podczas odświeżania po uruchomieniu aplikacji.
Wprowadź nowe elementy, a następnie zauważ, że operacja push kończy się niepowodzeniem z powodu stanu CancelledByNetworkError za każdym razem, gdy klikniesz przycisk Zapisz. Jednak nowe pozycje na liście zadań istnieją w lokalnym magazynie danych do momentu, gdy mogą zostać przesłane do backendu aplikacji mobilnej. W aplikacji produkcyjnej, jeśli pomijasz te wyjątki, aplikacja kliencka zachowuje się tak, jakby nadal była połączona z zapleczem aplikacji mobilnej.
Zamknij aplikację i uruchom ją ponownie, aby sprawdzić, czy nowo utworzone elementy są zapisane w pamięci lokalnej.
(Opcjonalnie) W programie Visual Studio otwórz program Server Explorer. Przejdź do swojej bazy danych w Azure—>SQL Databases. Kliknij prawym przyciskiem myszy bazę danych i wybierz pozycję Otwórz w Eksploratorze obiektów programu SQL Server. Teraz możesz przejść do tabeli bazy danych SQL i jej zawartości. Sprawdź, czy dane w bazie danych zaplecza nie uległy zmianie.
(Opcjonalnie) Użyj narzędzia REST, takiego jak Fiddler lub Postman, aby wykonać zapytanie względem zaplecza mobilnego przy użyciu zapytania GET w formularzu
https://<your-mobile-app-backend-name>.azurewebsites.net/tables/TodoItem
.
Aktualizowanie aplikacji w celu ponownego połączenia zaplecza aplikacji mobilnej
W tej sekcji ponownie połączysz aplikację z zapleczem aplikacji mobilnej. Te zmiany symulują ponowne połączenie sieciowe w aplikacji.
Po pierwszym uruchomieniu aplikacji program obsługi zdarzeń OnNavigatedTo
wywołuje InitLocalStoreAsync
. Ta metoda z kolei wywołuje SyncAsync
w celu zsynchronizowania lokalnego magazynu danych z główną bazą danych. Aplikacja próbuje przeprowadzić synchronizację podczas uruchamiania.
Otwórz App.xaml.cs w projekcie współdzielonym i odkomentuj wcześniejszą inicjalizację
MobileServiceClient
, aby użyć poprawnego adresu URL aplikacji mobilnej.Naciśnij F5, aby ponownie skompilować i uruchomić aplikację. Aplikacja synchronizuje Twoje lokalne zmiany z zapleczem serwera usługi Azure Mobile App, używając operacji wypychania i ściągania, gdy procedura obsługi zdarzeń
OnNavigatedTo
jest wykonywana.(Opcjonalnie) Wyświetl zaktualizowane dane przy użyciu Eksploratora obiektów programu SQL Server lub narzędzia REST, takiego jak Fiddler. Zwróć uwagę, że dane zostały zsynchronizowane między bazą danych zaplecza aplikacji mobilnej Azure a magazynem lokalnym.
W aplikacji kliknij pole wyboru obok kilku elementów, aby je ukończyć w sklepie lokalnym.
UpdateCheckedTodoItem
wywołujeSyncAsync
, aby zsynchronizować każdy ukończony element z zapleczem aplikacji mobilnej.SyncAsync
powoduje zarówno wypychanie, jak i ściąganie. Jednak przy każdym wykonaniu ściągnięcia względem tabeli, do której klient wprowadził zmiany, wypychanie jest zawsze wykonywane automatycznie. To zachowanie zapewnia spójność wszystkich tabel wraz z relacjami w magazynie lokalnym. To zachowanie może spowodować nieoczekiwany efekt. Aby uzyskać więcej informacji na temat tego zachowania, zobacz Synchronizacja danych w trybie offline w usłudze Azure Mobile Apps.
Podsumowanie interfejsu API
Aby obsługiwać funkcje usług mobilnych w trybie offline, użyliśmy interfejsu IMobileServiceSyncTable i zainicjowaliśmy MobileServiceClient.SyncContext z lokalną bazą danych SQLite. W trybie offline normalne operacje CRUD dla usługi Mobile Apps działają tak, jakby aplikacja nadal jest połączona, gdy operacje występują w sklepie lokalnym. Następujące metody służą do synchronizowania magazynu lokalnego z serwerem:
- PushAsync, ponieważ ta metoda jest elementem członkowskim IMobileServicesSyncContext, zmiany we wszystkich tabelach są wypychane do zaplecza. Do serwera są wysyłane tylko rekordy ze zmianami lokalnymi.
- PullAsync Ściąganie zostało uruchomione z IMobileServiceSyncTable. Gdy zmiany zostaną śledzone w tabelach, uruchamiana jest niejawna operacja wypychania, aby zapewnić, że wszystkie tabele w lokalnym magazynie oraz powiązania pozostają spójne. pushOtherTables parametr określa, czy inne tabele w kontekście są przesuwane podczas niejawnego przesunięcia. Parametr zapytania przyjmuje IMobileServiceTableQuery<T> lub ciąg zapytania OData w celu filtrowania zwróconych danych. Parametr queryId służy do definiowania synchronizacji przyrostowej. Aby uzyskać więcej informacji, zobacz Data Sync w trybie offline w usłudze Azure Mobile Apps.
- purgeAsync Aplikacja powinna okresowo wywoływać tę metodę, aby przeczyścić nieaktualne dane ze sklepu lokalnego. Użyj parametru force, jeśli musisz przeczyścić wszelkie zmiany, które nie zostały jeszcze zsynchronizowane.
Aby uzyskać więcej informacji na temat tych pojęć, zobacz Offline Data Sync w usłudze Azure Mobile Apps.
Więcej informacji
Poniższe tematy zawierają dodatkowe informacje podstawowe dotyczące funkcji synchronizacji offline usługi Mobile Apps: