Статьи

Включение гибридных мобильных приложений с помощью Couchbase

Автор Сэма Басу для Telerik Mobile Blog.

couchbase_header

Каждое мобильное приложение дает возможность вашим идеям и творческим способностям пожинать богатые дивиденды. Вы проявили должную осмотрительность, чтобы принять решение о механизме хранения данных — использовать SQL или NoSQL . Учитывая характер ваших нереляционных данных и потенциальный масштаб операций, вы выбираете NoSQL. И выбранный вами провайдер — Couchbase . Мудрый выбор, мой друг.

Кроме того, после долгих размышлений вы решили повторно использовать свои веб-навыки для создания гибридного кроссплатформенного мобильного приложения. В конце концов, кто бы не хотел, чтобы их приложения работали на каждой мобильной платформе при сохранении единой кодовой базы? И вы решили использовать Telerik AppBuilder для сквозного мобильного инструментария и всех необходимых сервисов сборки / развертывания. До сих пор ваш выбор был на месте. В этой статье мы расскажем о том, как легко начать интеграцию и управление хранилищем NoSQL через Couchbase Mobile внутри проекта гибридного мобильного приложения, чтобы обеспечить единообразное взаимодействие с пользователем.

Couchbase Mobile

Если вы еще не знаете, что такое Couchbase Mobile и как он может помочь вашему мобильному приложению, позвольте мне процитировать:

Couchbase Mobile позволяет разработчикам мобильных приложений легко создавать новые виды приложений, которые всегда доступны, быстры и отзывчивы, даже когда сеть ушла в подполье. Используя Couchbase Mobile, разработчики могут быстро создавать насыщенные контентом готовые офлайн-приложения, которые повышают заинтересованность пользователей и производительность.

По сути, он берет на себя большую часть работы разработчика и позволяет сосредоточиться на создании вашего удивительного приложения. Есть три компонента:

  1. Couchbase Lite — автономная легкая встроенная база данных JSON; Вы будете использовать это для локального хранения данных на мобильном устройстве с полными функциями CRUD (Создать | Читать | Обновить | Удалить).
  2. Sync Gateway — мост, который позволяет безопасно синхронизировать данные Couchbase Lite на устройстве с серверной частью Couchbase.
  3. Couchbase Server — высокопроизводительная масштабируемая база данных JSON, которая служит вашим бэкэндом в облаке.

Плагин Couchbase Lite

Плагин Couchbase Lite Проверена для гибридных мобильных приложения предлагают вам простую интеграцию с мощной собственной базой данных на устройстве NoSQL JSON, а также легко настройки для функциональных возможностей синхронизации с серверными услугами. Вы можете использовать плагин с любым гибридным мобильным приложением на основе Cordova , но, если вы используете Telerik AppBuilder, мы упростим интеграцию. Просто зайдите на сайт Couchbase Lite Plugin , как показано ниже, и нажмите большую кнопку Try Plugin в AppBuilder .

CBLitePlugin

Дождитесь, пока единороги закончат свою магию, и вы попадете на панель инструментов Telerik Platform , где все, что вам нужно сделать, это войти в систему. Если у вас еще нет существующей подписки на Telerik Platform, просто зарегистрируйтесь бесплатно пробный . Чтобы продемонстрировать мощь и простоту использования плагина Couchbase Lite в гибридных мобильных приложениях, вы обнаружите, что пример проекта (как показано ниже) был создан в рабочей области по умолчанию (которая по сути является заполнителем для проектов).

SampleCBProject

Загляните в окно Project Navigator вашего проекта и вы увидите, что все необходимые файлы для плагина Couchbase Lite для работы в вашем приложении уже добавлены, как показано ниже.

CBLitePluginBits

Кроме того, откройте файл « Свойства» и вы заметите, что на вкладке «Плагины» плагин Couchbase Lite уже включен для вашего приложения, как показано ниже.

CBLitePluginEnabled

Эти элементы конфигурации добавляются автоматически, чтобы сделать вашу интеграцию с Couchbase Lite максимально удобной. Пример проекта AppBuilder предназначен для гибридного приложения «ToDoLite» и готов к запуску — просто запустите симуляторы AppBuilder или легко разверните приложение на своем мобильном устройстве . У вас есть полнофункциональное приложение ToDo list на базе Couchbase Lite — это так просто.

Если вы не пользуетесь клиентом AppBuilder In-Browser, просто вернитесь на страницу плагина Couchbase Lite и загрузите биты. Затем вы можете использовать доступные инструкции для интеграции плагина в проект гибридного приложения AppBuilder с помощью любой IDE по вашему выбору — CLI, расширения Visual Studio или автономного клиента Windows AppBuilder. В клиенте AppBuilder In-Browser для уже существующего проекта вы всегда можете подключить плагин Couchbase Lite из магазина плагинов — при щелчке правой кнопкой мыши по проекту при помощи диспетчера пакетов появляется встроенный пользовательский интерфейс, как показано ниже.

MarketplaceIntegration

Начните с кода

Если вам не подходит прогулка по предварительно скомпонованному образцу приложения, давайте напишем код с нуля. Если предположить, что плагин Couchbase Lite уже включен в проект гибридного приложения AppBuilder, начать работу на самом деле довольно просто. Давайте создадим основные принципы работы со списком задач, который будет иметь базу данных документов NoSQL на устройстве, с которого мы собираемся читать / записывать / запрашивать данные.

Couchbase Lite работает с той же семантикой, что и Couchbase Server, и основан на RESTful API поверх базы данных документов, что позволяет приложениям взаимодействовать с хранилищем устройств различными способами. Плагин Couchbase Lite инициализируется через cblite, и когда он будет готов, нам нужно получить URL-адрес экземпляра базы данных Couchbase JSON, созданного на нашем устройстве. Вот код:

var app, db;

document.addEventListener('deviceready', function () {
         navigator.splashscreen.hide();
         couchbaseSetup();

         app = new kendo.mobile.Application(document.body, {
               skin: 'flat',
               initial: 'views/home.html'
         });
}, false);

function couchbaseSetup(){
         cblite.getURL(function(err, url) {
         if (err){
                alert("CouchbaseLite Initilization error "+ JSON.stringify(err))
         }

         // All good.
         alert("Couchbase Embedded DB URL: " + url);
         db = coax([url, "todos"]);
         });
});

Давайте разберемся, что происходит в коде. Во-первых, нам нужно дождаться devicereadyсобытия — это говорит о том, что платформа Cordova готова творить чудеса. Затем я использую Kendo UI Mobile для инициализации своего приложения. Вы можете, конечно, использовать любой другой доступный шаблон или свернуть свой собственный здесь. Затем мы запускаем все важные cblite.getURL()методы, которые по существу запрашивают URL-адрес базы данных Couchbase JSON на устройстве, чтобы мы могли взаимодействовать с ним. Так как это только для демонстрационных целей, позвольте мне добавить messageboxURL-адрес, который мы получаем, как показано ниже.

CBInit

Теперь обратите внимание на эту строку кода в предыдущем блоке кода?

db = coax([url, "todos"]);

По сути, когда у нас есть URL базы данных документов Couchbase, мы можем запустить CRUD для него через REST API. Но зачем все это кодировать вручную, когда есть хорошая обертка? Coax — это клиент с открытым исходным кодом, который делает операции CRUD быстрыми против любой базы данных Couchbase. Мы просто инициализируем Coax, передавая ему наш Couchbase URL и указывая на коллекцию базы данных todos . Если вам интересно, посмотрите на module.jsфайл в примере проекта AppBuilder Couchbase Lite, чтобы увидеть, как подключается Coax.

Управление данными

Теперь, когда мы используем Coax и имеем дескриптор в хранилище документов Couchbase Lite на устройстве, остальная часть манипулирования данными должна быть очень простой. Во-первых, давайте создадим нашу именованную базу данных — мы попытаемся найти базу данных и, если необходимо, создадим новую базу данных. Это достигается за счет простой db.get()и db.put()функций. Вот код:

// Try getting DB.
db.get(function(dbgeterror, getresponse){
      if (dbgeterror){
              // Create DB if needed.
              db.put(function(dbcreateerror, putresponse){
                 if (dbcreateerror){
                        alert(JSON.stringify(dbcreateerror));
                 }
                 if(putresponse.ok){
                        alert("DB created");
                 }
      });
}

      // See what DB Get brings back.
      alert(JSON.stringify(getresponse));
});

Просто для демонстрационных целей я добавляю db.get()ответ, как только мы создадим нашу базу данных именованных ( todos ) документов, как показано ниже.

CBdatabase

Теперь, когда наша база данных именованных документов настроена, операции CRUD с данными невероятно просты. Мы можем читать / записывать чистый JSON — реляционное отображение объектов не требуется. Так как мы создаем приложение списка ToDo, давайте создадим элемент ToDo, запишем его на диск, прочитаем обратно, а затем удалим запись. Все это достигается с помощью простых функций, таких как db.post(), db.get()и db.delete()с уникальным идентификатором записи. Вот пример кода:

// Sample Insert.
var sampletodo = {
                 "_id": "ToDo Item",
                 "text": "Do groceries",
                 "completed": false
};

db.post(sampletodo, function(inserterror, ok){
        // Read what was just inserted.
        db.get("ToDo Item", function(fetcherror, fetchresponse){
        alert(JSON.stringify(fetchresponse));

        // Drop the record.
        db.delete("ToDo Item", function(deleteerror, deleteresponse){});
        });
});

Вот предупреждающее сообщение, показывающее ответ от чтения записи — именно то, что мы вставили в базу данных, как показано ниже. С легкостью поддерживаются полные операции CRUD, теперь вы можете представить, как остальные приложения списка задач собираются вместе.

CBRecord

Синхронизация данных

До сих пор мы видели, что плагин Couchbase Lite позволяет хранить нереляционные данные в виде базы данных JSON и легко манипулировать данными на мобильном устройстве. Но это только половина истории, как скажет любой мобильный разработчик. Что хорошего в данных, если они являются только локальными на устройстве? Вы хотите, чтобы пользователь продолжал использовать данные из любого места или с любого устройства. Данные должны перемещаться, чтобы они могли следить за пользователем и поддерживать согласованность с любым мобильным клиентом. Это требует хранения данных централизованно где-то за пределами устройства, возможно, с максимальной гибкостью в облаке.

Мы хотим, чтобы данные локального устройства постоянно синхронизировались с данными внутреннего сервера. Но мобильные устройства часто перемещаются в областях, где нет подключения — как разработчики, мы хотим сделать как можно меньше работы, чтобы сделать синхронизацию данных умной, чтобы справиться с проблемами подключения. Войдите в Couchbase Sync Gateway .

Couchbase Sync Gateway — это простое в использовании масштабируемое интеллектуальное решение для синхронизации. Это сервер синхронизации, который обрабатывает аутентификацию / авторизацию пользователей, контроль доступа, маршрутизацию данных, проверку обновлений и репликацию с несколькими мастерами между Couchbase Server и мобильными клиентскими устройствами. Настроить синхронизирующий шлюз довольно просто.

Помните пример проекта ToDoList AppBuilder, который был создан для того, чтобы опробовать плагин Couchbase Lite? Он уже знает, как общаться с Couchbase Sync Gateway, чтобы синхронизировать локальные данные с хранилищем сервера Couchbase. Посмотрите на index.jsфайл для подробной реализации. Пример приложения подключается к демонстрационному экземпляру сервера Couchbase, и шлюз синхронизации уже настроен. Вы можете загрузить и запустить кроссплатформенный шлюз синхронизации локально в качестве службы или использовать хост-сервер из облака. Документация включает в себя дальнейшие шаги по настройке шлюза синхронизации.

В качестве альтернативы, если вы используете пример проекта приложения ToDoList, просто обновите REMOTE_SYNC_URLпеременную в index.jsфайле в демо-проекте, чтобы он указывал на ваш сервер или службу хостинга, где работает синхронизирующий шлюз. Вуаля! Couchbase Sync Gateway теперь умно синхронизирует данные документа JSON между мобильным устройством и внутренним сервером. Вы можете подключить несколько устройств, на которых запущено клиентское приложение, к одному серверу через шлюз синхронизации и просматривать изменения данных в режиме реального времени между клиентами / сервером. Хорошие времена!

Аналогичным образом, вы также можете рассмотреть возможность использования Telerik Backend Services для расширения возможностей ваших гибридных мобильных приложений с простым хранением данных. Backend Services хранит все ваши реляционные или нереляционные данные и предоставляет простые SDK / API для использования на любом языке программирования. Он интегрируется с Kendo UI DataSource для простых операций CRUD, и вы также можете легко добавить автономную поддержку в ваше мобильное приложение . Выбор — хорошая вещь для разработчиков!

Вывод

Гибридные кроссплатформенные мобильные приложения предоставляют разработчикам приложений возможность поддерживать единую кодовую базу, при этом приложение работает на любой мобильной платформе. Telerik AppBuilder — идеальный компаньон для создания гибридного приложения с гибкостью IDE для использования и простыми сервисами сборки / развертывания. Плагин Couchbase Lite позволяет гибридным мобильным приложениям использовать базу данных документов JSON на устройстве через простой REST API. Couchbase Sync Gateway обеспечивает идеальный случай синхронизации локальных данных с внутренним сервером Couchbase. У вас есть оболочки Couchbase для эффективной обработки данных NoSQL на мобильных устройствах с полными операциями CRUD и с непрерывной синхронизацией внутреннего сервера. Это обертка с использованием Couchbase Lite внутри Telerik AppBuilder для питания ваших гибридных мобильных приложений. Направляйтесь кTelerik Plugins Marketplace и начните работу с необходимыми плагинами уже сегодня. Идите вперед и создайте свою следующую удивительную идею приложения — технология здесь!

Изображение заголовка любезно предоставлено Naama ym