5

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

目前我的计划如下:

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

问题是——我的方向是否正确?是实现这一点的标准模式吗?也许有人可以向我指出一个以类似方式工作的开源应用程序?

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

谢谢

4

3 回答 3

2

我想你把这些问题混在一起了。

  • 如果您有关于制作 GWT Web 界面的问题,那就是一个问题。
  • 关于如何将 iPhone 同步到网络服务的问题是另一个问题。为此,您不想使用 GWT 的 RPC 进行同步,因为您必须在 iPhone 代码中伪造序列化系统的“浏览器端”,而 GWT 通常会为您提供。
于 2010-02-12T18:49:34.713 回答
0

想知道您是否考虑过使用同步框架来管理同步。如果您对此感兴趣,可以查看开源项目 OpenMobster 的 Sync 服务。您可以执行以下同步操作

  • 双向
  • 单向客户端
  • 单向装置
  • 开机

除此之外,所有修改都会自动跟踪并与云同步。当网络连接中断时,您可以让您的应用程序离线。它将跟踪任何更改,并在连接返回时自动在后台将其与云同步。它还提供跨多个设备的同步,如 iCloud

此外,云中的修改使用推送通知进行同步,因此即使数据存储在本地,数据也始终是最新的。

这是开源项目的链接:http: //openmobster.googlecode.com

这是 iPhone App Sync 的链接:http ://code.google.com/p/openmobster/wiki/iPhoneSyncApp

于 2012-03-18T17:42:55.017 回答
0

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

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

所以HOW:一种方式是Do-UnDo方式。离线时 - 保持用户对数据执行的操作日志按时间顺序用户在您连接后立即执行操作 - 发送到服务器并执行它们。从服务器到客户端都是一样的。只要您不编写每次操作都有大量数据的 Photoshop 软件,在大多数情况下都可以正常工作。GangOfFour 也将其称为动作模式。

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

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

于 2010-06-06T23:39:09.750 回答