Добавление автономной синхронизации данных в приложение .NET MAUI
Заметка
Этот продукт отставлен. Сведения о замене проектов с помощью .NET 8 или более поздней версии см. вбиблиотеке
В этом руководстве рассматривается функция автономной синхронизации мобильных приложений Azure для .NET MAUI. Автономная синхронизация позволяет конечным пользователям взаимодействовать с мобильным приложением, даже если сетевого подключения нет. Изменения хранятся в локальной базе данных. После возврата устройства эти изменения синхронизируются с удаленной серверной частью.
Перед началом работы с этим руководством необходимо выполнить краткое руководство по .NET MAUI,, включающее создание подходящей серверной службы.
Дополнительные сведения о функции автономной синхронизации см. в статье автономной синхронизации данных в мобильных приложениях Azure.
Обновление приложения для поддержки автономной синхронизации
В оперативной операции вы читаете и записываете данные из IRemoteTable<T>
. При использовании автономной синхронизации вместо этого выполняется чтение и запись из IOfflineTable<T>
.
IOfflineTable
поддерживается базой данных SQLite на устройстве и синхронизирована с серверной базой данных.
В Visual Studio:
Щелкните правой кнопкой мыши решение
TodoApp
, а затем выберите Управление пакетами NuGet для решения....На новой вкладке выберите Обзор, а затем в поле поиска введите Microsoft.Datasync.Client.
Выберите пакет
Microsoft.Datasync.Client.SQLiteStore
.В правой области выберите все клиентские проекты (кроме проекта
TodoAppService.NET6
).Выберите Установить.
Примите лицензионное соглашение при появлении запроса.
Обновление клиента удаленной службы
Откройте проект TodoApp.Data
и найдите класс RemoteTodoService.cs
(в каталоге Services
). Обновите класс следующим образом:
Добавьте следующую инструкцию
using
в начало файла:using Microsoft.Datasync.Client.SQLiteStore;
Измените определение
_table
наIOfflineTable<TodoItem>
:/// <summary> /// Reference to the table used for datasync operations. /// </summary> private IOfflineTable<TodoItem> _table = null;
Добавьте новое свойство для хранения расположения автономной базы данных:
/// <summary> /// The path to the offline database /// </summary> public string OfflineDb { get; set; }
Обновите метод
InitializeAsync
, чтобы определить автономную базу данных:// 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;
Обновите
RefreshItemsAsync()
, чтобы выполнить автономную синхронизацию:/// <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; }
Настройка расположения автономной базы данных
В проекте TodoApp.MAUI
измените файл MainPage.xaml.cs
. Измените определение RemoteTodoService
следующим образом:
TodoService = new RemoteTodoService(GetAuthenticationToken)
{
OfflineDb = FileSystem.CacheDirectory + "/offline.db"
};
Если вы еще не выполнили руководство по проверке подлинности , это определение должно выглядеть следующим образом:
TodoService = new RemoteTodoService()
{
OfflineDb = FileSystem.CacheDirectory + "/offline.db"
};
Тестирование приложения
Приложение не синхронизируется с серверной частью до нажатия значка обновления. Чтобы проверить:
Откройтепортала Azure
. Откройте группу ресурсов, содержащую ресурсы для краткого руководства.
Выберите базу данных
quickstart
.Выберите редактор запросов (предварительная версия).
Войдите с помощью проверки подлинности SQL Server, используя те же учетные данные, которые вы настроили для базы данных.
- При необходимости вам будет предложено разрешить доступ к IP-адресу. Выберите ссылку, чтобы обновить список разрешений, а затем нажмите кнопку ОК, чтобы повторить вход.
В редакторе запросов введите
SELECT * FROM [dbo].[TodoItems]
. Затем выберите Запустить.
Отобразится список текущих TodoItems.
Теперь внесите некоторые изменения в приложение. ПОКА НЕ НАЖИМАЙТЕ КНОПКУ ОБНОВЛЕНИЯ (пока).
Повторите инструкцию SQL на портале Azure и убедитесь, что изменения не были внесены в данные в базе данных.
Щелкните значок Обновить в приложении, чтобы отправить данные в очередь в серверную службу. Вы увидите http-транзакции, происходящие в окне отладки вывода.
Повторите инструкцию SQL на портале Azure и убедитесь, что изменения были отправлены в удаленную службу.
Очистка ресурсов
Если вы не выполняете другое краткое руководство по началу работы, вы можете удалить ресурсы, связанные с серверной службой.
- Откройтепортала Azure
. - Выберите группу ресурсов, содержащую ресурсы быстрого запуска.
- Выберите Удалить группу ресурсов.
- Следуйте инструкциям, чтобы подтвердить удаление.
Вы также можете использовать Azure CLI:
az group delete -g quickstart
Если вы использовали интерфейс командной строки разработчика Azure для развертывания ресурсов, вы можете использовать вместо этого команду azd down
.
Удаление займет несколько минут.
Дальнейшие действия
- Ознакомьтесь с документацией ПО ИСПОЛЬЗОВАНИЮ:
- ASP. Документация по службе NET6
- документации клиента .NET