Синхронизация мобильных данных

В настоящее время я начинаю разрабатывать мобильное приложение (iOS и Android) для существующей веб-платформы. Эта веб-платформа имеет REST API, и клиентское приложение будет использовать его для связи. Дело в том, что мобильное приложение может вносить изменения в API, а у меня должна быть офлайн-поддержка. Это будет иметь проблемы с синхронизацией:

  1. Клиенты могут изменять одни и те же данные в автономном режиме, а затем это может создать проблемы при синхронизации этой информации с сервером.

  2. Веб-клиент также может изменить информацию, а мобильный клиент находится в автономном режиме и не видит этих изменений, и я также могу изменить этот старый контент.

  3. Наличие мобильного приложения для хранения последних данных в автономном режиме, чтобы пользователь мог работать. И когда он подключается к сети, он должен учитывать изменения и отправлять изменения на сервер.

Есть ли какие-то теоретические вещи, которые я могу прочитать или увидеть алгоритмы, которые можно использовать для этого? Я имею в виду, что это обычное дело в разработке мобильных приложений, и я не хочу изобретать велосипед здесь.


person apinho    schedule 29.08.2013    source источник
comment
проверьте это coenraets .org/блог/2012/05/   -  person Sunil Mishra    schedule 29.08.2013
comment
Предупреждение было бы уместно: 1. Реализация полнофункциональной технологии синхронизации будет чрезвычайно сложной. 2. Судя по вашему описанию, вам, скорее всего, потребуется полноценное решение. Лишь нескольким компаниям удалось предоставить надежное коммерческое решение! (см. Riak, на basho.com) Даже не так просто проанализировать всю проблемную область, что доказывает существование многих решений Simple Data Synchronization Solution for Mobile.   -  person CouchDeveloper    schedule 29.08.2013


Ответы (2)


Недавно я писал в блоге о синхронизации (алгоритм синхронизации для обмена данными в ” через REST API). Алгоритм, о котором я упоминал в посте, используется для создания функций синхронизации для поддержки автономных клиентов. Это может помочь вам получить некоторые идеи по созданию логики синхронизации для ваших конкретных требований.

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

person Havrl    schedule 30.08.2013
comment
выше ссылка битая. - person Shivaraj Patil; 13.11.2015
comment
@Shivaraj Patil - предоставленная ссылка должна работать. Это служба блоггеров, поддерживаемая Google. - person Havrl; 14.11.2015
comment
Я дважды проверил, он говорит, что данные не получены ERR_EMPTY_RESPONSE - person Shivaraj Patil; 14.11.2015

Чтобы решить вашу проблему, вы можете следовать нижеприведенному подходу.

Например, вы вносите изменения через веб-клиент. В это время ваш мобильный отключен. Эти изменения сохраняются на сервере. Теперь вы внесли изменения в мобильном телефоне и в автономном режиме. Вот сложная часть, которую нужно сделать: когда ваш мобильный телефон подключается к сети, сначала проверьте, есть ли какие-либо изменения, сделанные через веб-клиент? если да, то спросите пользователя: «Хотите ли вы перезаписать его своими последними изменениями?» например, такое сообщение или что-то еще, что вы хотите отобразить, чтобы предупредить пользователя о том, что изменения конфликтуют.

Если выбрано «да», загрузите изменения, сделанные с мобильного устройства.

Надеюсь, это поможет вам решить вашу проблему.

person Ripal Tamboli    schedule 29.08.2013
comment
Чтобы определить, сделаны изменения или нет, вы можете добавить переменную флага на сервере. :) - person Ripal Tamboli; 29.08.2013
comment
Что делать, если данные синхронизируются с несколькими устройствами? это не работает. Это неправильный способ реализации синхронизации. Сценариев и конфликтов сотни. - person Shivaraj Patil; 13.11.2015
comment
@ShivarajPatil да, вы правы. это будет проблемой, если поддерживается один и тот же вход в систему на нескольких устройствах одновременно, и эти устройства находятся в автономном режиме. - person Ripal Tamboli; 17.11.2015