保持iPhone应用程序与GWT应用程序同步

ref*_*log 5 iphone gwt core-data data-synchronization

我正在开发一个应该可以在离线和在线模式下工作的iPhone应用程序.
在它的在线模式中,它应该将用户输入的所有信息提供给由GWT/GAE支持的Web服务.在它的离线模式下,它应该在本地存储信息,当连接可用时,将它同步到Web服务.

目前我的计划如下:

  1. 使用Protobuffers在应用程序和Web服务之间提供连接,以实现高效的线上通信
  2. 使用Core Data使用本地数据库
  3. 轮询网络状态,并在可用时同步数据库并保留某种local-db-to-remote-db密钥同步.

问题是 - 我是否朝着正确的方向前进?实现这个的标准模式是什么?也许有人可以指向一个以类似方式工作的开源应用程序?

我对iPhone编码很陌生,很高兴听到任何建议.

谢谢

Bor*_*ich 0

关于系统设计方向:首先,如果没有真正的需要,请不要创建 2 个不同的应用程序,一个 GWT,而其他 iPhone 创建一个但编写良好的 GWT 应用程序。它将离线工作,没有问题,并且将使用HTML 功能管理您的数据 -离线应用程序缓存 如果必须创建 2 个单独的应用程序,至少可以节省您的精力,并且不会像使用标准 GWT 方法那样编写服务器两次几乎肯定无法从独立应用程序与服务器通信(它是通过 HTTP 压缩 JSON 并带有一些棘手的标头...),或者会两次写入内容,因此请查看RestLet 库,它受到 GAE 的良好支持。

关于离线/在线切换保持同步的方法:有多种方法需要考虑,但都不是完美的。因此,当您考虑您的想法时,请考虑您的用户的期望...不要成为 Microsoft Word,不要试图智胜用户。如果用例中至少有一种场景需要用户干预来合并更改(并且将会有 - 将其带到银行) - 那么您将为此实现 UI - 那么就有充分的理由经常使用它 -用户会习惯的。自从他开始使用该应用程序以来,它比在一段时间内看到它要好,因为很少有需要,因为您实现了一个超级骗子合并逻辑,仅在非常特殊的情况下询问用户......不要这样做。平衡努力。因为此类代码中的错误会给用户带来的混乱比带来的好处要痛苦得多。

所以如何做:第一种方法是“Do-UnDo”方法。离线时 - 按时间顺序记录用户对数据执行的操作,用户在连接后立即执行这些操作 - 发送到服务器并执行它们。从服务器到客户端都是一样的。只要您编写的不是每次操作都包含大量数据的 Photoshop 类软件,大多数情况下都可以正常工作。GangOfFour 也将其称为“动作模式”。

另一种方法是源代码控制方法。- 版本甚至可能是锁。非常依赖于应用程序。DBMS 内部有时使用它来实现事务。

并且总有一个选项是离线时只读:-)