使 iPhone 应用程序与 GWT 应用程序保持同步
Posted
技术标签:
【中文标题】使 iPhone 应用程序与 GWT 应用程序保持同步【英文标题】:Keeping iPhone application in sync with GWT application 【发布时间】:2010-02-12 17:14:16 【问题描述】:我正在开发一个应该在离线和在线模式下工作的 iPhone 应用程序。 在它的在线模式下,它应该将用户输入的所有信息提供给由 GWT/GAE 支持的网络服务。 在离线模式下,它应该将信息存储在本地,并在连接可用时将其同步到网络服务。
目前我的计划如下:
-
使用 Protobuffers 在应用和 Web 服务之间提供连接,以实现高效的有线通信
使用 Core Data 处理本地数据库
轮询网络状态,并在可用时同步数据库并保持某种 local-db-to-remote-db 密钥同步。
问题是 - 我的方向是否正确?是实现这一点的标准模式吗?也许有人可以向我指出一个以类似方式工作的开源应用程序?
我对 iPhone 编码非常陌生,很高兴听到任何建议。
谢谢
【问题讨论】:
我认为您的问题更多地与一般同步问题有关(谁是主人,iphone 或 gwt 后端的本地更改)对吗?我也会对此感兴趣。 这正是我感兴趣的。将本地更改同步到 Web 服务器上的主数据集。 【参考方案1】:我认为你把问题混在一起了。
如果您有关于制作 GWT Web 界面的问题,那就是一个问题。 关于如何将 iPhone 同步到网络服务的问题是另一个问题。为此,您不想使用 GWT 的 RPC 进行同步,因为您必须在 iPhone 代码中伪造序列化系统的“浏览器端”,而 GWT 通常会为您提供。【讨论】:
我同意我的问题可能有点模糊。关于你的第一点 - 这不是我要问的,第二点更接近。我意识到我不能使用 GWT 的 RPC,并且必须提供自定义 Web 服务,这就是我在问题中写的,我计划提供 ProtoBufs 接口。我要问的是 - 这个工作流程有一个共同的模式吗?帮助将 Core Data 与远程数据同步的库?教程?【参考方案2】:关于系统设计方向: 首先,如果没有真正的需要,请不要创建 2 个不同的应用程序一个 GWT 和另一个 iPhone 创建一个编写良好的 GWT 应用程序。它可以离线工作,并使用html feature -- offline application cache 管理您的数据 如果必须创建 2 个单独的应用程序 至少可以节省自己的精力,并且不要像使用标准 GWT 方法那样编写服务器两次,您几乎肯定无法从独立应用程序与服务器通信(它是通过 HTTP 压缩 JSON 并带有一些棘手的标头...)或将把事情写成这样,看看RestLet library它得到了GAE的很好支持。
关于离线/在线切换保持同步的方式: 有几种方法需要考虑,但都不是完美的。因此,当您考虑您的想法时,请考虑您的期望……不要成为 Microsoft Word,不要试图智取用户。 如果在用例中至少有一个场景需要用户干预以合并更改(并且会有 - 把它带到银行) - 那么你将为此实现 UI - 那么有充分的理由经常使用它 -用户会习惯的。自从他开始使用该应用程序以来,它比它会在一段时间内看到它更好,因为很少需要它,因为您实现了一个超级欺骗合并逻辑,仅在非常特殊的情况下询问用户......不要这样做。 平衡努力。因为这样的代码中的错误会给用户带来的混乱比所有好处都痛苦得多。
所以如何: 一种方式是 Do-UnDo 方式。 离线时 - 保持用户按时间顺序对数据执行的操作日志 一旦你连接 - 发送到服务器并执行它们。从服务器到客户端都是一样的。 只要您不编写每次操作都有大量数据的 Photoshop 软件,在大多数情况下都可以正常工作。 GangOfFour 也将其称为动作模式。
另一种方式是源代码控制方式。 - 版本,甚至可能是锁。非常依赖应用程序。 DBMS 在内部有时将其用于事务实现。
并且总是有一个选项可以在离线时只读:-)
【讨论】:
【参考方案3】:想知道您是否考虑过使用同步框架来管理同步。如果您对此感兴趣,可以查看开源项目 OpenMobster 的 Sync 服务。您可以进行以下同步操作
双向 单向客户端 单向装置 启动除此之外,所有修改都会自动跟踪并与云端同步。当网络连接中断时,您可以让您的应用程序离线。它将跟踪任何更改,并在连接返回时自动在后台将其与云同步。它还提供跨多个设备的同步,例如 iCloud
此外,云中的修改使用推送通知进行同步,因此即使数据存储在本地,数据也始终是最新的。
这里是开源项目的链接:http://openmobster.googlecode.com
这里是 iPhone App Sync 的链接:http://code.google.com/p/openmobster/wiki/iPhoneSyncApp
【讨论】:
没有OpenMobster了!以上是关于使 iPhone 应用程序与 GWT 应用程序保持同步的主要内容,如果未能解决你的问题,请参考以下文章