【发布时间】:2013-02-23 21:58:29
【问题描述】:
由于我对 CouchDB 的了解较少,我有点困惑。让我用简单的话解释一下。我正在开发一个 iphone 应用程序,我的客户可能会要求提供 android 版本。我使用 CouchDB 作为该应用程序的数据存储。
我们设计了一个后端,管理员可以在其中设置/更新信息。所有更新的信息都应复制到所有 iphone 设备。当我说从服务器复制到设备时,我并不是指从一个 iphone 设备复制到另一个设备。意味着更新源始终是服务器。
我的客户还希望尽可能让大部分功能脱机工作。为了使某些功能离线,客户端要求我使用 CouchDB 和 TouchDB(在 iphone 上),它们会自动同步。
在我看来,CouchDB 的设计目的不是为了达到这个目的,而是设计用于复制,这是分布式计算所需的,其中数据源不是一台服务器而是多台服务器。
使用 CouchDB/TouchDB 我遇到了很多问题。一个大问题是我的逻辑和 UI 实现是一起构建在我的 xcode 上的。如果明天我想开发 Android 应用程序,那么我必须在 android 语法中实现相同的逻辑。逻辑变化需要更新两个版本。如果客户明天要开发windows和BB版本,那就更令人沮丧了。
为了避免这种情况,我建议我的客户应该使用 3 层架构,我们将在其中构建一个中间件,并将我们的逻辑保留在那里。我们需要在应用级别开发的唯一工作是通过 WebService 从中间件获取数据并呈现 UI。
但在向我的客户提出建议之前,我想从专业知识中确认我的想法。我可能是错的,因为我对 CouchDB 不太了解,而且 CouchDb 可能只是为离线/在线设置而设计的。
请等待这里的专家。
【问题讨论】:
-
我建议做适合您的技能和客户要求的事情。您可以将同步逻辑移至第三层,但很难判断这是否会使客户端逻辑更容易。您似乎只是在转移问题并增加故障点的数量。
-
"您似乎只是在转移问题并增加故障点的数量。"怎么样?
-
将逻辑保存在一个适用于所有人(iphone/android/windows/BB)的地方并不是一个好主意。 3 层是世界公认的方法。不是吗?
-
您有 2 层(电话、数据库)。现在3?这将增加故障点的数量。您是否尝试过 TouchDB 以查看它是否满足您的需求?它适用于 Android 和 iOS。你真的需要为 4 部手机开发吗?
-
现在让我们举个例子。适用于 iPhone 和 Db 的 2 层。 Android 和 DB 2 层,BB 和 DB 2 层……现在你怎么看?您将在这里面临多少失败点?这不仅仅是关于故障点,只是考虑逻辑的变化(不是设计的变化,设计的变化会导致应用程序修改)。逻辑上的一次改变会导致每一种语言的修改,不是吗?
标签: iphone couchdb 3-tier offlineapps touchdb