关于系统设计方向:首先,如果没有 REAL 不需要创建 2 个不同的应用程序,一个 GWT 和其他 iPhone 创建一个但编写良好的 GWT 应用程序。它可以离线工作,并且将使用HTML 功能管理您的数据 -离线应用程序缓存
如果必须创建 2 个单独的应用程序,至少可以节省您的精力,并且不要像使用标准 GWT 方法那样编写服务器两次几乎完全无法从独立应用程序与服务器通信(它通过 HTTP 压缩 JSON 并带有一些棘手的标头......)或者会两次编写内容,因此请查看GAE 很好支持 的RestLet 库。
关于与离线/在线切换保持同步的方式:有几种方法需要考虑,但都不是完美的。因此,当您考虑您的用户时,请考虑您的期望……不要成为 Microsoft Word,不要试图智取用户。如果在用例中至少有一个场景需要用户干预以合并更改(并且会有 - 把它带到银行) - 那么你将为此实现 UI - 那么有充分的理由经常使用它 -用户会习惯的。自从他开始使用该应用程序以来,它比它会在一段时间内看到它更好,因为很少需要它,因为您实现了一个超级欺骗合并逻辑,仅在非常特殊的情况下询问用户......不要这样做。平衡努力。因为这样的代码中的错误会给用户带来的混乱比所有好处都痛苦得多。
所以HOW:一种方式是Do-UnDo方式。离线时 - 保持用户对数据执行的操作日志按时间顺序用户在您连接后立即执行操作 - 发送到服务器并执行它们。从服务器到客户端都是一样的。只要您不编写每次操作都有大量数据的 Photoshop 软件,在大多数情况下都可以正常工作。GangOfFour 也将其称为动作模式。
另一种方式是源代码控制方式。- 版本,甚至可能是锁。非常依赖应用程序。DBMS 在内部有时将其用于事务实现。
并且总是有一个选项可以在离线时只读:-)