Офлайн Microsoft Azure - SQLite - Разработка на приложения на платформата на Microsoft
Сега на пазара има огромен брой приложения, които не са адаптирани да работят офлайн, което създава неудобство за потребителите. Преди известно време за C# разработчиците стана достъпен нов Microsoft Azure Mobile Services SQLiteStore SDK 1.0 alpha, който предоставя API за създаване на приложения, работещи в офлайн условия и се грижи за синхронизирането на данните между локалната база данни и базата данни на Azure. SQLite се създава и използва като локална база данни, така че имаме следните популярни начини за организиране на офлайн съхранение:
- Сериализация в XML, JSON или друг NoSQL.
- SQLite или други бази данни на трети страни.
- Всеки път локалното копие на базата данни се актуализира напълно.
- Само промените се предават по мрежата.
SDK за мобилни услуги на Azure за синхронизация
Функционалността на новите Microsoft Azure Mobile Services SQLiteStore SDK 1.0 alpha за синхронизиране на данни не е идентична с Sync Framework или Azure Data Sync. От гледна точка на клиента все още е възможно да се работи само с SQLite, но създателите обещават, че възможностите ще се развият и други бази данни от страна на клиента ще бъдат добавени по-късно. Страната на сървъра поддържа следните бази данни: SQL Database, MongoDB и Azure Table Storage. SDK поддържа следните операции:Push (насочване към сървър),Изтегляне (изтегляне от сървър),Purge (изчистване на локално хранилище). Днес ще се съсредоточим върху това как да създадете бекенд за вашето приложение с помощта на Microsoft Azure Mobile Services SQLiteStore SDK 1.0 alpha. За да работимще имаш нужда:
Нашата задача ще се състои от следните точки:
- Създаване на мобилна услуга и мобилна база данни в Microsoft Azure;
- Създайте проект за приложение. Ще правим универсално приложение във Visual Studio.
- Създаване на локална база данни за приложения.
- Реализации за синхронизиране на данни.
Настройте мобилните услуги на Azure
1. За да създадете мобилна услуга Azure за вашия проект, трябва да отворите портала на Microsoft Azure и да отидете в менютоМобилни услуги -Ново
2. Когато мобилната услуга е създадена, на главната страница на услугата можете да намерите инструкции как да я използвате в приложения за много популярни платформи и рамки, като Windows, Windows Phone, IOS, Andro />
3. Можете да изтеглите шаблона на проекта за облачна услуга, да промените кода му, например, като коригирате модела на данните, както е на екранната снимка по-долу.
Създайте проект за приложение
1. Ще използвам проекта Universal App за Windows и Windows Phone.
2. След като създадем проекта, ще свържем необходимите библиотеки. Тъй като имаме проект както за Windows, така и за Windows Phone, трябва да инсталирамеWindowsAzure.MobileServices и за двата проекта.
публичен статичен MobileServiceClient MobileService = нов MobileServiceClient("https://demo-backend.azure-mobile.net/", "ZDgibxPOCWSwOvbYJvAAipjAybMIJO51");
4. Сега можем да работим с данните чрез облачната услуга и да запазим данните в базата данни.
Създайте локална база данни и синхронизирайте
Сега трябва да създадем локално хранилище за данни на SQLite.
2. Нека добавим SQLite като използвана библиотека за нашите Windows и Windows Phone приложения.
3. Инсталирайте и добавете къмПрепратки пакетWindowsAzure.MobileServices.SQLiteStore
4. Отворете проектаShared и създайте нов празен клас с модел на данни там. В моя случай се получи така:
5. Нека създадем спомагателен клас, който ще създаде локална база данни за нас, ще можем да я попълваме с данни и да изпращаме данни към облачната услуга.
публичен статичен клас MobileServicesSync
public static async void InitSQLiteStore()
var store = new MobileServiceSQLiteStore("DemoAppSync.db");
await App.MobileService.SyncContext.InitializeAsync(магазин, нов MobileServiceSyncHandler());
публичен статичен асинхронен void InsertItem(елемент MyAppItem)
Таблица IMobileServiceSyncTable = App.MobileService.GetSyncTable();
public static async void Push()
низ errorString = нула;
CancellationToken token = нов CancellationToken();
> catch(MobileServicePushFailedException ex)
errorString = "Изпращането е неуспешно поради грешки при синхронизирането: " + ex.PushResult.Errors.Count() + ", съобщение: " + ex.Message;
> улов (изключение ex)
errorString = "Неуспешно натискане: " + ex.Message;
Интерфейс на приложението
1. ОтворетеMainPage.xaml и добавете бутони за попълване на таблицата с данни и синхронизация.
2. Добавете кода за обработка на събития къмMainPage.xaml.cs.
private void addBtn_Click(изпращач на обект, RoutedEventArgs e)
private void syncBtn_Click(изпращач на обект, RoutedEventArgs e)
Стартиране и проверка
1. Стартирайте приложението и вижте как работи.
2. Веднага след като стартирахме приложението, вече сме създали локална SQLite база данни. Можем да го намерим в папката на приложението и да погледнем. За това ще използвам SQLiteБраузър.
Моята база данни е тук: C:\Users\[потребителско име]\AppData\Local\Packages\[id на приложение]\LocalState
Както можете да видите, сега е празно.
3. Добавете елемент към него, като щракнете върху бутонаДобавяне на елемент на нашето приложение.
4. Данните в базата данни ще бъдат актуализирани и там ще бъде добавен запис, но нашата облачна база данни е все още празна.
5. Сега щракнете върху бутонаСинхронизиране в приложението за синхронизиране на база данни и вижте резултата.
Синхронизацията работи и данните се появяват в облачната база данни от локалната база данни на приложението.
Забележка: За тези, които не са успели.
Може да се окаже, че създаването на локална база данни ще се провали с грешка. След това намерете и добавете къмРеференции сборкаSQLitePCL.Ext.dll. По някаква причина самият той не винаги се инсталира от NuGet.
Заключение
Новите мобилни услуги на Microsoft Azure и техния SDK имат много полезни нови функции за разработчиците на приложения. Една от тях е поддръжка за офлайн работа и синхронизиране на данни за приложения. Следвайки това ръководство, можете да настроите синхронизиране на данни за вашия телефон или Windows приложение, без да отделяте много време за сложни алгоритми и писане на библиотеки.