Я создаю относительно сложное и тяжелое веб-приложение с данными в AngularJS. Я планирую использовать php как бэкэнд RESTful (с symfony2 и FOSRESTbundle). Я потратил несколько недель на поиски различных решений для решений синхронизации вкл/выкл и, похоже, много решений (см. Список ниже для некоторых примеров). Но не из них, похоже, идеально подходят для моей ситуации. Как мне решить, какую стратегию меня устраивает?
Какие проблемы, которые могут определять "лучшие практики" для построения системы синхронизации вкл/выкл в AngularJS и symfony 2, требуют определенных исследований, но, во-первых, я хочу рассмотреть такие вещи, как скорость, простота внедрения, будущее (долговременное решение), расширяемость, использование ресурсов/требования на стороне клиента, наличие нескольких автономных пользователей, редактирующих одни и те же данные, сколько и какие типы данных хранить.
Некоторые из моих требований, о которых я сейчас знаю, следующие:
- Пользователи часто будут отключены, а затем синхронизируются (локально созданные) данные с базой данных
- Несколько пользователей используют часть доступных для редактирования данных (необходимо учитывать потенциальные проблемы слияния).
- Пользователь может одновременно регистрироваться на нескольких устройствах.
- Предоставление большого количества данных для хранения в автономном режиме (до гигабайта)
- Я, вероятно, хочу, чтобы пользователь мог решить, что он хочет хранить локально.
- Даже если пользователь подключен к сети, я, вероятно, хочу, чтобы пользователь мог выбрать, использует ли он все (бэкэнд) данные или только то, что доступно локально.
Некоторые возможные примеры решений
- PouchDB - интересные стратегии для синхронизации изменений из нескольких источников
- Racer - Node lib для синхронизации в реальном времени, на основе ShareJS
- Meteor - DDP и стратегии для синхронизации
- ShareJS - Node.js операционная трансформация, вдохновленная Google Wave
- Restangular - альтернатива $resource
- EmberData - EmberJSs ORM-подобная библиотека сохранения данных
- ServiceWorker
- IndexedDB Polyfill - Polyfill IndexedDB с браузерами, поддерживающими WebSQL (Safari)
- BreezeJS
- JayDatali >
- Loopbacks ORM
- ActiveRecord
- Модели BackBone
- lawnchair - Легкая клиентская DB-библиотека от Brian Leroux
- TogetherJS - библиотека синхронизации/совместной работы с несколькими клиентом Mozilla Labs.
- localForage - библиотека улучшения Mozilla DOMStorage.
- Orbit.js - библиотека синхронизации содержимого
Любая помощь будет высоко оценена:)