Добавление автономной синхронизации данных в приложение Uno Platform
Заметка
Этот продукт отставлен. Сведения о замене проектов с помощью .NET 8 или более поздней версии см. вбиблиотеке
В этом руководстве описывается функция автономной синхронизации мобильных приложений Azure для краткого руководства по платформе uno platform. Автономная синхронизация позволяет конечным пользователям взаимодействовать с мобильным приложением — просматривать, добавлять или изменять данные, даже если сетевого подключения нет. Изменения хранятся в локальной базе данных. После возврата устройства эти изменения синхронизируются с удаленной серверной частью.
Перед началом работы с этим руководством необходимо выполнить краткое руководство по использованию платформы uno Platform, включающее создание подходящей серверной службы. Мы также предполагаем, что вы добавили проверки подлинности в приложение. Вы можете добавить автономные возможности в приложение без проверки подлинности.
Обновление приложения для поддержки автономной синхронизации
В оперативной операции вы читаете и записываете данные из IRemoteTable<T>
. При использовании автономной синхронизации вместо этого выполняется чтение и запись из IOfflineTable<T>
.
IOfflineTable<T>
использует базу данных SQLite на устройстве, которая синхронизируется с удаленной службой.
Добавление необходимых пакетов NuGet
В 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.Uno
измените файл MainPage.xaml.cs
. Измените определение RemoteTodoService
следующим образом:
_service = new RemoteTodoService(async () => await GetAuthenticationToken())
{
OfflineDb = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "/offline.db"
};
Если вы еще не выполнили руководство по проверке подлинности , это определение должно выглядеть следующим образом:
_service = new RemoteTodoService()
{
OfflineDb = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + "/offline.db"
};
Заметка
Вы можете хранить автономную базу данных, где есть разрешения на чтение и запись и создание в системе Windows. Класс Environment.SpecialFolder
предоставляет стандартные расположения в соответствии с приложением.
Тестирование приложения
Приложение не синхронизируется с серверной частью до нажатия значка обновления. Чтобы проверить:
Откройтепортала 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