2012-05-31 3 views
3

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

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

Я планирую работать с узлом в качестве сервера.

Thanks

+0

Существует модуль под названием now.js, который был разработан для аналогичной цели, но проект был оставлен сейчас (несмотря на то, насколько он был полезен). http://news.ycombinator.com/item?id=4667826 –

ответ

1

Вы говорите о двух вещах; 1) Как хранить/сохранять данные, если/когда они находятся в автономном режиме (механизм хранения), и 2) Как синхронизировать с сервером в режиме онлайн (механизм связи). Ответ на 1 - это какое-то локальное хранилище, и есть несколько способов сделать это (localstorage, websql, API-интерфейсы файловой системы и т. Д.) В зависимости от вашей платформы. Ответ на 2 действительно зависит от того, насколько срочны ваши потребности в синхронизации, но в целом вы можете использовать сам HTTP с периодическими (длинными) опросами, веб-сайтами и тому подобное.

Наряду с механизмами хранения и связи имеются многочисленные библиотеки, которые упрощают работу, например, Meteor (связь) и CouchDB (хранилище), но также и многие другие. Существуют даже библиотеки, которые заботятся о реальном механизме синхронизации (с возможным возможным разрешением конфликта), но это очень зависит от вашего фактического приложения.

Обновлено: Эта структура выглядит многообещающим, но я не проверял это сам:

http://blog.nateps.com/announcing-racer-experimental-realtime-model

+0

Я знаю о многих способах локального хранения, а также о том, как отправлять и получать данные. Я спрашиваю, уже сделано ли что-либо, и все это делается в одном пакете.Я серьезно рассматриваю Meteor, но так как это бета-версия, мне было интересно, похоже ли что-то подобное. Все, где я могу «сохранить» базу данных на клиенте и просто абстрагироваться от всего остального. – danielsvane

+0

Поиск здесь для «html5 offline sync» появляется довольно много ответов, в которых обсуждаются методы, но очень мало в плане готовых к использованию решений. Вполне возможно, что «простой» и «разрешает все операции» может быть взаимоисключающим, поэтому все зависит от того, что ваш вариант использования (односторонняя синхронизация, двусторонняя синхронизация, одна к одной, одна ко многим, многие - многим). –

+0

Спасибо за помощь. Я провел некоторое тестирование, и Метеор, по-видимому, работает так, как я хочу. В автономном режиме приложение продолжает работать как обычно, и просто обрабатывает сервер как очень медленный. Когда он восстанавливает соединение, он синхронизирует все данные. – danielsvane

1

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

Simperium () интересный облачный сервис - только один, я могу найти сегодня, что делает при синхронизации (в отличие от Firebase и Spire.io, которые подобны в других отношениях), и прошивкой включает сохранение в автономном режиме, в то время как для JavaScript клиентам, которые вам нужно будет самостоятельно покрыть локальное хранилище, используя функции HTML5. У Backbone.js есть определенная поддержка этого, и Simperium может интегрироваться с Backbone, используя аналогичный стиль API.

Для не облачных сервисов, Derbyjs () является проектом с открытым исходным кодом, который включает в себя Racer, библиотека синхронизации данных (упоминаемый ранее ответа) - оба в условиях быстрого развития и еще не завершен, но если смотреть интересно ваше временные рамки позволяют и не требуют облачного обслуживания. Существует comparison of Derbyjs to Meteor, что полезно - хотя это написано разработчиками Derbyjs, это не слишком предвзято.

Я также посмотрел на CouchDB, у которого есть интересные встроенные функции репликации, но мне не нравилось его использование индексов, которые обновляются лениво, когда запрос им нужен (или пакетным процессом), и я wasn 'счастлив, что вы напрямую используете серверную БД для клиентов, чтобы включить репликацию/синхронизацию. Как правило, я считаю, что лучше всего отделить локальное хранилище на стороне клиента от базы данных на стороне сервера, и, конечно же, для веб-приложения было бы сложно использовать CouchDB на клиенте.

Смежные вопросы