首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AngularJS和Symfony 2实现在线/离线数据同步的最佳实践

使用AngularJS和Symfony 2实现在线/离线数据同步的最佳实践
EN

Stack Overflow用户
提问于 2014-04-09 09:13:13
回答 5查看 9.1K关注 0票数 18

我正在AngularJS中构建一个相对复杂和数据密集的web应用程序。我计划使用php作为RESTful后端(使用symfony2和FOSRESTbundle)。我花了几周时间寻找不同的在线同步解决方案的解决方案,并且似乎有很多一半的解决方案(参见下面列出的一些例子)。但它们似乎都不适合我的情况。我该如何决定哪种策略适合我呢?

哪些问题可能决定在AngularJS和symfony 2中构建联机同步系统的“最佳实践”,需要进行一些研究,但在我的头脑中,我想考虑的是速度、实现的易用性、未来的证明(持久的解决方案)、扩展性、客户端的资源使用/需求、多个脱机用户编辑相同的数据、要存储的数据的数量和类型。

我目前意识到的一些要求是:

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

一些潜在的示例解决方案

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

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

如能提供任何帮助,将不胜感激:)

EN

回答 5

Stack Overflow用户

发布于 2014-04-09 17:45:26

你好像想要很多东西,同步的东西很难.在我正在开发的OSS库中,我有一个解决方案来解决其中一些问题。其想法是,它可以对本地数据进行版本化,这样你就可以找出改变了什么,从而进行有意义的同步,其中还包括冲突解决等。这是一种离线流星,因为它真的被调到离线使用(对于没有移动数据信号的伦敦地铁)。

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

它目前正在使用LocalStorage,但很容易迁移到localForage,因为它实际上使用了localStorage的包装器,使其成为异步API.可能是名单上的另一个?

票数 3
EN

Stack Overflow用户

发布于 2015-02-12 17:16:20

为了与请求者脱机工作,我建议将问题分为两种情况:内容(html、js、css)和数据(API )。

内容

appcache将离线存储在小型应用程序中,也可以存储在带有服务人员的高级应用程序中。铬40+.

数据

需要解决存储和同步问题,这是一个更加困难的问题。我建议深入阅读微分同步算法,并考虑下面的提示:

前部

将资源和阴影(例如,使用url作为键)存储到小型应用程序的本地存储区或更高级的替代品(pouchdb、indexdb、.)。有了资源,您可以脱机工作,当需要与服务器同步时,使用jsonpath获取资源阴影之间的差异,并将其发送到服务器修补程序请求。

后端

在后端,考虑将影子副本存储到redis中。

双方(前端/后端)需要标识客户端节点,这样您就可以在header上使用x- syn-token (在客户端的所有请求中使用角度拦截器发送它)。

票数 2
EN

Stack Overflow用户

发布于 2014-04-27 02:42:19

https://www.firebase.com/ --它是可靠和证明的,可以作为后端和同步库用于您所追求的目标。但是,它需要成本,并且需要一些集成编码。

https://goinstant.com/也是一个很好的托管选项。

在我的一些应用程序中,我希望两者兼备:同步db源和另一个主数据库。(mogno/express、php/mysql等)然后,每个db处理它最好的功能,以及它的特性(实时与安全,等等)。这是正确的,无论是同步-db提供程序(无论是赛车或火基地或GoInstant .)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22957902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档