4

有没有一种简单的方法可以使用 Web 应用程序管理离线数据,并在有连接时与服务器同步?我一直在看 Meteor、CouchDB 等,但仍然不确定什么是最不痛苦的方式。

我当然可以用套接字或类似的东西自己实现它,但如果已经为此目的制作了一些东西,我看不出有理由再做一次。

我打算使用 Node 作为服务器。

谢谢

4

2 回答 2

2

你说的是两件事;1)如果/离线时如何存储/持久数据(存储机制),以及 2)在线时如何与服务器同步(通信机制)。1 的答案是某种本地存储,根据您的平台,有几种方法可以做到这一点(localstorage、websql、文件系统 API 等)。2 的答案实际上取决于您的同步需求的紧迫程度,但通常您可以将 HTTP 本身与定期(长)轮询、websockets 等一起使用。

除了存储和通信机制之外,还有许多使工作变得更简单的库,例如 Meteor(通信)和 CouchDB(存储),还有更多。甚至还有一些库负责处理实际的同步机制(也可能解决冲突),但这在很大程度上取决于您的实际应用程序。

更新:这个框架看起来很有希望,但我自己还没有测试过:

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

于 2012-05-31T13:34:15.990 回答
1

您可能还想查看云服务。如果您正在开发一个新的应用程序,这些是最好的,因为它们会将您更多地推向无服务器模型,当然您必须对使用服务感到满意。

Simperium ( ) 是一个有趣的云服务——我今天能找到的唯一一个可以同步的(不像 Firebase 和 Spire.io 在其他方面是相似的),对于 iOS,它包括离线存储,而对于 JavaScript 客户端你会需要使用 HTML5 功能自己覆盖本地存储。Backbone.js 似乎对此有一些支持,并且 Simperium 可以与 Backbone 集成,使用类似的 API 样式。

对于非云服务,Derbyjs ( ) 是一个开源项目,其中包括 Racer,一个数据同步库(前面的答案提到过)——两者都在快速开发中,尚未完成,但如果你的时间尺度允许,看起来很有趣,并且不需要云服务。将 Derbyjs 与 Meteor 进行了比较,这很有用——尽管它是由 Derbyjs 开发人员编写的,但并没有太大的偏见。

我还查看了 CouchDB,它具有一些有趣的内置复制功能,但我不喜欢它使用在查询需要时(或通过批处理)延迟更新的索引,我对此不满意将服务器数据库直接暴露给客户端以启用复制/同步。一般来说,我认为最好将客户端本地存储与服务器端 DB 分离,当然对于 Web 应用程序来说,在客户端上使用 CouchDB 会很困难。

于 2012-07-25T08:04:10.917 回答