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

时间:2010-05-16 22:06:59

标签: iphone ruby-on-rails web-services synchronization

我写了许多从Web服务中提取数据的iPhone应用程序,我一直致力于在iPhone应用程序和Web应用程序之间同步数据,但我一直认为可能有更好的方法来处理同步。

我想知道您使用什么策略来同步iPhone(阅读:移动)应用和您的Rails(阅读:网络)应用程序之间的数据。

  • 是否有任何策略可以扩展得特别好?
  • 您是如何处理大量数据的? (你使用分页回复吗?)
  • 如何确保数据不会被覆盖?
  • 是否有理由避免使用Ruby on Rails?
    • 如果是的话,你能建议一个替代方案吗?替代方案有什么好处?
  • 哪些策略失败了?
    • 为什么你认为那些策略失败了?

我希望能够在服务器上保留所有数据修改,但我即将开始工作的特定应用程序需要能够在与网络断开连接时进行操作。

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

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

3 个答案:

答案 0 :(得分:2)

不是你的整个问题的答案,但是我开始做的事情从移动的角度来看有助于在发送服务器同步数据的逻辑和Web服务器本身之间放置一层。

我创建了一个数据实体,它只是一个通用的同步对象,我正在存储一个唯一的ID,Payload和上次尝试的交付日期。我有另外一些逻辑,它从核心数据中抓取Sync对象并将其发送出去。如果收到了良好的响应(即响应实际返回并且响应文本是我预期的那样),则删除该Sync对象。这有助于确保您的同步数据正确到达目的地,而不仅仅是在海上迷路。这也是离线操作的好模型。您可以在离线时存储同步对象,并在重新联机后开始按顺序发送它们。

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

答案 1 :(得分:2)

自从我提出这个问题以来已经过去了大约2年,而且景观发生了巨大的变化。现在是后端即服务提供商,如Kinvey,Apple发布了iCloud,一些用于与外部数据源同步的开源项目如雨后春笋般涌现。

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

答案 2 :(得分:1)

如果您正在使用rails,您可以查看我刚才写的plistifier插件:查看我的plistifier插件http://github.com/jeena/plistifier