0

由于我对 CouchDB 的了解较少,我有点困惑。让我用简单的话解释一下。我正在开发一个 iphone 应用程序,我的客户可能会要求提供 android 版本。我使用 CouchDB 作为该应用程序的数据存储。

我们设计了一个后端,管理员可以在其中设置/更新信息。所有更新的信息都应复制到所有 iphone 设备。当我说从服务器复制到设备时,我并不是指从一个 iphone 设备复制到另一个设备。意味着更新的来源始终是服务器。

我的客户还希望如果可能的话,大部分功能都应该离线工作。为了使某些功能离线,客户端要求我使用 CouchDB 和 TouchDB(在 iphone 上),它们会自动同步。

根据我的说法,CouchDB 的设计目的不是为了达到这个目的,而是设计用于复制,这是分布式计算所需的,其中数据源不是一台服务器而是多台服务器。

使用 CouchDB/TouchDB 我面临很多问题。一个大问题是我的逻辑和 UI 实现是一起构建在我的 xcode 上的。如果明天我想开发 Android 应用程序,那么我必须在 android 语法中实现相同的逻辑。逻辑变化需要更新两个版本。如果客户明天要开发windows和BB版本,那就更令人沮丧了。

为了避免这种情况,我可以建议我的客户使用 3 层架构,我们将在其中构建一个中间件,并将我们的逻辑保留在那里。我们需要在应用程序级别开发的唯一工作是通过 WebService 从中间件获取数据并呈现 UI。

但在向我的客户提出建议之前,我想从专业知识中确认我的想法。我可能错了,因为我对 CouchDB 不太了解,也许 CouchDb 仅用于离线/在线设置。

请等待从专业知识到这里。

4

1 回答 1

3

我现在正在做类似的事情,所以我可以分享我的发现。

我们使用 BigCouch(由 Cloudant 管理的 CouchDB 的一个分支,提供 Couch 机器集群)来存储我们的数据,然后使用 iOS 版 TouchDB 将数据复制到移动设备。

我们已经能够让 TouchDB 与 BigCouch 一起工作,但在此过程中并非一帆风顺。TouchDB 利用了 CouchDB 中内置的现有复制功能并很好地处理了它。

根据我的经验,TouchDB 在离线模式下也能很好地工作。复制将在设备离线时从中断处继续。您还可以将 Touch 配置为进行推、拉或两者兼而有之,这很好。

真正的问题是您何时想要迁移到 Android。TouchDB Java 端口现在处于抱歉状态。它存在,但尚未准备好投入生产。事实上,就在本周,我在 Twitter 上看到他们正试图聘请某人来接管该项目。

即使 TouchDB 的 Java 端口已准备好投入生产,您是对的,您必须为 Android 重新编写代码。然后,无论您使用什么技术,情况都会如此。

于 2013-03-09T01:29:09.943 回答