Přidání offline synchronizace dat do aplikace pro Windows (UPW)

Tento kurz se zabývá funkcí offline synchronizace Azure Mobile Apps pro aplikaci rychlý start pro UPW. 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ž není k dispozici žádné síťové připojení. Změny se ukládají v místní databázi. Jakmile je zařízení zase online, tyto změny se synchronizují se vzdáleným back-endem.

Před zahájením tohoto kurzu byste měli mít dokončený rychlý úvodní kurz pro UPW, který zahrnuje vytvoření vhodné back-endové služby. Předpokládáme také, že jste do aplikace přidali ověřování . Do aplikace můžete přidat offline funkce bez ověřování.

Aktualizace aplikace tak, aby podporovala offline synchronizaci

V online operaci, číst do a zapisovat z .IRemoteTable<T> Při použití offline synchronizace se místo toho čte a zapisuje z něj IOfflineTable<T> . Tato IOfflineTable<T> databáze je podporována databází SQLite na zařízení a synchronizuje se s back-endovou databází.

Přidání potřebných balíčků NuGet

V sadě Visual Studio:

  1. Klikněte pravým tlačítkem na TodoApp řešení a pak vyberte Spravovat balíčky NuGet pro řešení....

  2. Na nové kartě vyberte Procházet a do vyhledávacího pole zadejte Microsoft.Datasync.Client .

    Screenshot of adding the offline NuGet in Visual Studio.

  3. Microsoft.Datasync.Client.SQLiteStore Vyberte balíček.

  4. V pravém podokně vyberte všechny klientské projekty (s výjimkou TodoAppService.NET6 projektu).

  5. Vyberte volbu Instalovat.

  6. Po zobrazení výzvy přijměte licenční smlouvu.

Aktualizace klienta vzdálené služby

TodoApp.Data Otevřete projekt a vyhledejte RemoteTodoService.cs třídu (v adresářiServices). Aktualizujte třídu následujícím způsobem:

  1. Na začátek souboru přidejte následující using příkaz:

    using Microsoft.Datasync.Client.SQLiteStore;
    
  2. Změňte definici _table na :IOfflineTable<TodoItem>

    /// <summary>
    /// Reference to the table used for datasync operations.
    /// </summary>
    private IOfflineTable<TodoItem> _table = null;
    
  3. Přidejte novou vlastnost pro ukládání umístění offline databáze:

    /// <summary>
    /// The path to the offline database
    /// </summary>
    public string OfflineDb { get; set; }
    
  4. Aktualizujte metodu InitializeAsync tak, aby definovala offline databázi:

    // Create the offline store definition
    var connectionString = new UriBuilder { Scheme = "file", Path = OfflineDb, Query = "?mode=rwc" }.Uri.ToString();
    var store = new OfflineSQLiteStore(connectionString);
    store.DefineTable<TodoItem>();
    var options = new DatasyncClientOptions
    {
        OfflineStore = store,
        HttpPipeline = new HttpMessageHandler[] { new LoggingHandler() }
    };
    
    // Create the datasync client.
    _client = TokenRequestor == null 
        ? new DatasyncClient(Constants.ServiceUri, options)
        : new DatasyncClient(Constants.ServiceUri, new GenericAuthenticationProvider(TokenRequestor), options);
    
    // Initialize the database
    await _client.InitializeOfflineStoreAsync();
    
    // Get a reference to the offline table.
    _table = _client.GetOfflineTable<TodoItem>();
    
    // Set _initialized to true to prevent duplication of locking.
    _initialized = true;
    
  5. RefreshItemsAsync() Aktualizujte synchronizaci offline:

    /// <summary>
    /// Refreshes the TodoItems list manually.
    /// </summary>
    /// <returns>A task that completes when the refresh is done.</returns>
    public async Task RefreshItemsAsync()
    {
        await InitializeAsync();
    
        // First, push all the items in the table.
        await _table.PushItemsAsync();
    
        // Then, pull all the items in the table.
        await _table.PullItemsAsync();
    
        return;
    }
    

Nastavení umístění offline databáze

TodoApp.UWP V projektu upravte App.xaml.cs soubor. Změňte definici následujícím RemoteTodoService způsobem:

TodoService = new RemoteTodoService(GetAuthenticationToken)
{
    OfflineDb = ApplicationData.Current.LocalCacheFolder.Path + "\\offline.db"
};

Pokud jste kurz ověřování nedokončili, měla by definice vypadat takto:

TodoService = new RemoteTodoService()
{
    OfflineDb = ApplicationData.Current.LocalCacheFolder.Path + "\\offline.db"
};

Pokud se nerozpozná, budete možná muset na začátek souboru ApplicationData přidat následující položky:

using Windows.Storage;

Poznámka:

Univerzální platforma Windows omezuje, kde můžete číst a zapisovat data. Můžete použít některou ze složek úložiště v ApplicationData.Currentsouboru . Pokud chcete zajistit, aby data byla k dispozici, ale nezálohovaná do cloudu, použijte LocalCacheFolder.

Otestování aplikace

Aplikace se nesynchronizuje s back-endem, dokud se nestiskne ikona aktualizace. Postup testování:

  1. Otevřete Azure Portal.

  2. Otevřete skupinu prostředků, která obsahuje prostředky pro rychlý start.

  3. quickstart Vyberte databázi.

  4. Vyberte editor dotazů (Preview).

  5. Přihlaste se pomocí ověřování SQL Serveru pomocí stejných přihlašovacích údajů, které jste nastavili pro databázi.

    • V případě potřeby se zobrazí výzva k povolení přístupu pro vaši IP adresu. Výběrem odkazu aktualizujte seznam povolených a stisknutím klávesy OK zkuste přihlášení zopakovat.
  6. V editoru dotazů zadejte SELECT * FROM [dbo].[TodoItems]. Pak vyberte Spustit.

Zobrazí se seznam aktuálních položek TodoItems.

Screenshot of the results in the S Q L query editor.

Teď v aplikaci udělejte nějaké změny. NESTISKEJTE TLAČÍTKO AKTUALIZOVAT (dosud).

Opakujte příkaz SQL na webu Azure Portal a ověřte, že se v datech v databázi neprovedou žádné změny.

Výběrem ikony Aktualizovat v aplikaci odešlete data do fronty do back-endové služby. Transakce HTTP se zobrazí v okně Výstupní ladění.

Opakujte příkaz SQL na webu Azure Portal a ověřte, že se změny odeslaly do vzdálené služby.

Vyčištění prostředků

Pokud neděláte další rychlý úvodní kurz, můžete teď odstranit prostředky přidružené k back-endové službě.

  1. Otevřete Azure Portal.
  2. Vyberte skupinu prostředků, ve které jsou prostředky rychlého startu.
  3. Vyberte Odstranit skupinu prostředků.
  4. Odstranění potvrďte podle pokynů.

Můžete také použít Azure CLI:

az group delete -g quickstart

Pokud jste k nasazení prostředků použili Azure Developer CLI, můžete místo toho použít azd down příkaz.

Odstranění bude trvat několik minut.

Další kroky