Приложение Angular работает в автономном режиме и синхронизируется

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

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


person Anthony Joanes    schedule 08.04.2015    source источник
comment
может у вас есть какое-то поле, например, время изменения и время последнего получения или что-то, говорящее IsDirty   -  person harishr    schedule 08.04.2015
comment
Да, у нас есть измененная дата и флаг синхронизации, но таким образом нам придется отслеживать каждое поле. Думаю, я ищу хороший шаблон для ведения журнала изменений измененных полей. Когда наш флаг isdirty установлен, весь объект отправляется по сети, и это нормально, но что, если другие пользователи внесли изменения в автономном режиме и также синхронизировали обратно, кто прав. Вот почему я думаю, журнал изменений.   -  person Anthony Joanes    schedule 08.04.2015
comment
поддержание его для каждого поля было бы слишком много ... извините, я не знаю о такой структуре и все равно буду опасаться этого делать ...   -  person harishr    schedule 08.04.2015
comment
Прочитал несколько полезных советов, послушайте quickleft.com/blog/ Оптимистическое управление версиями вполне может подойти мне.   -  person Anthony Joanes    schedule 09.04.2015
comment
хороший блог ... управление версиями достаточно хорошо, но тогда это для каждой записи, а не для каждого поля   -  person harishr    schedule 09.04.2015


Ответы (1)


Я много думал об этом и создал проект... Документация к нему подробная и объясняет, почему и как... Это может помочь или, по крайней мере, дать вам пищу для размышлений. Совсем недавно он был обновлен для поддержки IndexedDB.

https://github.com/forbesmyester/SyncIt

Существует также RemoteStorage (они рассматривали возможность использования SyncIt + другие элементы в будущем проекте), Hood.ie и коммерческий FireBase в этой области.

person Forbesmyester    schedule 08.04.2015
comment
Спасибо, обязательно посмотрю этот проект - person Anthony Joanes; 09.04.2015
comment
RemoteStorage тоже выглядит неплохо. - person Anthony Joanes; 09.04.2015
comment
Спасибо, не могли бы вы дать мне голос или принять, пожалуйста :-) - person Forbesmyester; 10.04.2015