Rails应用程序和iPhone应用程序之间数据同步的策略

19

我写过很多iPhone应用程序,这些应用程序从Web服务中提取数据,并且我也曾经致力于在iPhone应用程序和Web应用程序之间同步数据,但我一直觉得可能有更好的方法来处理同步。

我想知道您用于在iPhone(即移动设备)应用程序和Rails(即Web)应用程序之间同步数据的策略。

  • 是否有特别适用的扩展性策略?
  • 如何处理大量数据?(使用分页响应吗?)
  • 如何确保数据不被覆盖?
  • 是否有理由避免使用Ruby on Rails?
    • 如果是,您能否建议另一种选择?该替代方案有何优点?
  • 哪些策略失败了?
    • 为什么您认为那些策略失败了?

我希望能够将所有数据修改保存在服务器上,但我即将开始开发的特定应用程序需要在脱机情况下运行。

用户将能够在移动设备上更新数据并通过Web应用程序更新数据。

当用户的移动设备连接到服务器时,任何本地更改都将被推送到服务器。

3个回答

4

自我提出这个问题以来已经过去了大约两年,情况发生了巨大变化。现在有后端即服务提供商,例如Kinvey,苹果已经发布了iCloud,并且一些用于与外部数据源同步的开源项目也应运而生。

最终,我只需要在设备上保留最新服务器数据的副本,因此我为每个模型对象添加了一个时间戳,并设置了Web服务以提供自我传递的时间戳更新的所有对象。API将按FIFO顺序输出所有对象,我可以在手机上使用它们,并且对于后续调用,我会要求返回自设备上拥有的最大时间戳以来更新的所有内容。在实践中,这非常有效。


2

虽然不是对你整个问题的回答,但是我开始做的有助于移动端的是在发送服务器同步数据的逻辑和Web服务器之间添加了一层。

我创建了一个数据实体,只是一个通用的同步对象,存储唯一ID、Payload和最后尝试发送的日期。我还有另外一部分的逻辑来从Core Data中获取同步对象并将它们发送出去。如果收到良好的响应(即实际获得响应并且响应文本是我期望的),那么该同步对象将被删除。这有助于确保您的同步数据能够正确到达目的地,而不会丢失在海洋中。这也是离线操作的好模型。您可以在离线时仅存储同步对象,一旦回到在线状态就依次开始发送它们。

从Web的角度来看,Rails Metal听起来可能很适合这种情况。我自己从未使用过它,但根据一些阅读,它似乎是用于可能存在高流量和快速响应至关重要的情况下。它基本上削减了Rails路由器等的开销。希望这有所帮助。


1
我一直在做类似的事情,不过我的同步对象也处理通信。我认为我更喜欢你的方法。你是将同步对象保存在CoreData中吗?还是只是归档它们? - jessecurry
1
是的,它们被保存为CoreData对象。 - jtrim

1

1
这个 Rails 插件有什么优势? - Jeena

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接