Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Разработка мобильных приложений с Dropbox Datastore API

Anna | 17.06.2014 | нет комментариев
У Dropbox есть три API для мобильных приложений:

  • Drop-ins два примитивных UI компонента: Chooser для выбора файла из Dropbox-директорий пользователя и Saver для сохранения файлов в Dropbox. Никакой настройки, аутентификации. Вызываете компонент, вместо получаете ссылку на файл. Под iOS и Android доступен только Chooser, Saver появится позднее.
  • Core API самый низкоуровневый API. Он разрешает читать и записывать файлы и директории на сервере Dropbox. Авторы называют API — RESTish. То есть он использует HTTP, читаемые URL, JSON результаты, но не следует REST тезисам исчерпывающе. Для аутентификации применяется OAuth 2.0.
  • Sync API работает поверх Core API и выглядит как доступ к файловой системе. Директории и файлы доступны даже без доступа к интернету и синхронизируются механически с серверами Dropbox. Самое комфортное API для разработки мобильных приложений.

Sync API отменен, но по статистике, многие мобильные разработчики применяют его для хранения структурированных данных. Сериализуют их в JSON, сберегают в файлы, синхронизируют с облаком. Это работает до тех пор, пока не происходит одновременного метаморфозы данных с различных устройств. Даже если вы поменяете не конфликтующие по смыслу данные, на ярусе файла это будет раздор и Dropbox не сумеет его решить.

Следственно мы выпустили Datastore API. Он синхронизируем не файлы, а данные, чем-то схож на удаленную NoSQL базу данных с кешированием.


Скажем, у вас есть SQLite база данных. Она синхронизируется с облаком при помощи Dropbox Core API. Если поменять значения в различных строках таблицы на различных устройствах, мы получим раздор синхронизации файла. Правда метаморфозы на ярусе данных не конфликтуют с друг ином. Datastore API решает эту задачу.

Модель данных

В DataStore применяется не реляционная модель данных, а что-то схожее на NoSQL. У всякого Dropbox пользователя есть хранилище, хранилище содержит в себе таблицы. Таблицы делятся на записи у всякой записи есть поля со значениями. Записи в таблице могут иметь различный комплект полей, то есть реально это не таблица, нет строк и столбцов, нет грубой конструкции.

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

Магия начинается позже вызова способа sync. В iOS и Android sync вызывается позже заключения осмысленной последовательности метаморфозы данных. Дозволено сравнить с коммитом в системах контроля версий.

В фоне Dropbox непрерывно получает метаморфозы данных с сервера. Когда вы вызываете sync ваши локальные метаморфозы объединяются с правками на сервере и посылаются обратно. Серверные метаморфозы используются к локальной копии только позже вызова Sync.

Разрешение раздоров

Мы уделили много внимания разрешению раздоров. Раздор происходит когда два устройства единовременно обновляют одно и то же хранилище. Скажем, два устройства теряют доступ к интернету. Локально сохранена ревизия 1 хранилища. Оба устройства меняют данные в хранилище. При возникновении интернета и синхронизации устройств с сервером мы получим две различные версии ревизии 2, это и есть раздор.

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

При использовании этих правил сервером вы получите ошибку синхронизации с подробностями об изменениях и можете программно объединить данные и послать их на сервер еще раз.

По умолчанию работает правило «выигрывает сервер». Если приложение пытается отправить метаморфоза поля на сервер, которое теснее было изменено, остается версия сервера, значение поля пришедшее с устройства выбрасывается. Скажем, у меня нет доступа к сети и я на своем телефоне меняю номер телефона Маши на 911. Тем временем моя секретарша, с доступом к интернету, меняет номер Маши на 112. Когда мой телефон выйдет в онлайн, мои метаморфозы номера будут отброшены. Номером Маши будет 112.

Дозволено поменять правило по умолчан

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB