使用AngularJS和Symfony 2进行开/关线数据同步的最佳实践

Kri*_*iss 15 javascript offlineapps symfony data-synchronization angularjs

我正在AngularJS中构建一个相对复杂且数据量很大的Web应用程序.我打算使用php作为RESTful后端(使用symfony2和FOSRESTbundle).我花了几周时间寻找不同的线路/线路同步解决方案解决方案,似乎有很多半解决方案(参见下面的列表中的一些示例).但他们中的任何一个似乎都完全符合我的情况.我如何决定采用哪种策略?

哪些可能决定在AngularJS和symfony 2中构建开/关线同步系统的"最佳实践"的问题需要一些研究,但在我的头脑中我想考虑诸如速度,易于实现,未来证明(持久性)等问题解决方案),可扩展性,客户端的资源使用/需求,让多个离线用户编辑相同的数据,存储多少和什么类型的数据.

我目前了解的一些要求是:

  • 用户经常离线,然后需要与数据库同步(本地创建)数据
  • 多个用户共享一些可编辑数据(需要考虑潜在的合并问题).
  • 用户可能同时从多个设备登录.
  • 允许大量数据离线存储(最高可达千兆字节)
  • 我可能希望用户能够决定他想在本地存储什么.
  • 即使用户在线,我也可能希望用户能够选择是使用所有(后端)数据还是仅使用本地可用的数据.

一些潜在的示例解决方

  • PouchDB - 用于同步来自多个源的更改的有趣策略
  • Racer - 用于实时同步的节点库,基于ShareJS构建
  • Meteor - DDP和同步策略
  • ShareJS - Node.js运营转型,受Google Wave的启发
  • Restangular - 替代$ resource
  • EmberData - EmberJS的类似ORM的数据持久性库
  • ServiceWorker
  • IndexedDB Polyfill - Polyfill IndexedDB,带有支持WebSQL的浏览器(Safari)
  • BreezeJS
  • JayData
  • 环回的ORM
  • ActiveRecord的
  • BackBone模型
  • lawnchair - Brian Leroux的轻量级客户端数据库库
  • TogetherJS - Mozilla Labs的多客户端状态同步/协作库.
  • localForage - Mozilla的DOMStorage改进库.
  • Orbit.js - 内容同步库

(https://docs.google.com/document/d/1DMacL7iwjSMPP0ytZfugpU4v0PWUK0BT6lhyaVEmlBQ/edit#heading=h.864mpiz510wz)

任何帮助将非常感激 :)

For*_*ter 3

你似乎想要很多东西,同步的东西很难...我正在开发的 OSS 库中有一些东西的解决方案。这个想法是,它对本地数据进行版本控制,这样您就可以找出发生了什么变化,从而进行有意义的同步,其中还包括冲突解决等。这有点像离线流星,因为它确实适合离线使用(例如伦敦地铁没有移动数据信号)。

我还围绕它开发了一个生态系统,其中包括连接管理器和服务器。主要项目位于https://github.com/forbesmyester/SyncIt,并且有很好的文档记录和测试。生态系统的测试应用程序将位于https://github.com/forbesmyester/SyncItTodoMvc,但我尚未为其编写几乎任何文档。

它目前正在使用 LocalStorage,但很容易转移到 localForage,因为它实际上使用 localStorage 的包装器来使其成为异步 API...也许是列表中的另一个?