没有服务器端的CouchApp或具有xdomain问题的CouchDB后端?

dwo*_*rad 6 couchdb couchapp

我一直在玩CouchDB和CouchApp一段时间了.我正计划将它用于我正在开发的新网站项目.

  1. 从可扩展性的角度来看,我喜欢CouchApp的想法.

    缺点是没有服务器端代码,有些东西(如oAuth身份验证)在客户端很难做到.在某些时候,我确定我需要一些描述的服务器端代码 - 我想你可以看看Node.js,但不想在这一点上.

  2. 使用CouchDB纯粹作为后端解决方案,而您的页面是从另一台服务器提供的,这也很合适,但缺点是跨域问题阻止您轻松使用内置的CouchDB API.

那么有没有人能解决这两个缺点之一呢?

你能以某种方式从CouchApp服务于服务器端代码(甚至PHP会赢)或者你能以某种方式使用一个单独的网站来服务你的网页但是克服了跨域问题吗?

我真的试图让解决方案尽可能干净(并且可扩展),而CouchDB的一个好处就是超级简单,超快速的API,所以我真的不想在它周围使用包装器 - 除非它没有阻碍了性能/可扩展性.

欢迎您的意见.

Big*_*Hat 16

因为CouchDB使用基于HTTP的API,所以有几种方法可以将服务器端代码(node.js,PHP等)与CouchApp"混合和匹配".

我将选项分为三类:

  1. 首先,您现在拥有2层架构:来自CouchDB的Browser + CouchApp.对于只需要浏览器和CouchDB可以提供的应用程序来说,这是一个很好的解决方案,但是只要您需要发送电子邮件,调整图像大小或从其他数据库获取数据,您就需要另一层.有一个HTTP API(MySQL,MongoDB等).
  2. 接下来是3层架构:浏览器+ Apache/PHP(或类似堆栈)+ CouchDB.这是更"传统"的选择(即LAMP).这对于逐渐迁移到CouchDB很好,但从长远来看,通过第二个HTTP服务器(可能是代理)或服务器端脚本语言(如PHP)来路由所有内容会变得很麻烦.
  3. 最后,我最喜欢的是2.5 Tier Architecture:Browser + CouchDB + externals或_changes基于feed的"动作".在这种情况下,PHP(或类似的)充当CouchDB的服务提供者.可以通过让PHP观察某些类型文档的_changes提要及其更改(即图像上传,电子邮件消息文档)来触发操作,或者可以设置CouchDB来"ping"_external处理程序以对文档进行进一步处理或其附件.这本质上是couchdb-lucene通过观察更新并在它们发生或定期进行操作时的工作方式.

您可以在下面找到有关_changes feed和_external处理程序的更多信息:

  • _changes feed:http://guide.couchdb.org/draft/notifications.html
  • _external处理程序:http://wiki.apache.org/couchdb/ExternalProcesses

值得一提的是,我将在周三的PHP和CouchDB网络广播中讨论这三个选项.您的问题将成为网络广播结束时讨论的重要补充.

我很想知道你的CouchApp是如何产生的,以及你如何解决上面提到的问题.