0

我们计划使用 PHP 作为 web 前端和 MongoDB 作为数据库的 web 项目(会计软件)。此外,可能还会有适用于 iPhone 和 Android 的移动应用程序、可能的 REST API 等等。我们需要在原始数据库(设计模式 MVC 或 MVP 中的“模型”)上编写具有尽可能多的共享功能的中间层。在这种情况下编写中间层的聪明方法是什么?

我们正在考虑的选项:

1)将中间层编写为PHP库。另外:与 PHP 前端的连接超级简单,但对于其他用例(移动应用程序、REST API ......)来说不是很好。编辑:对于安全性和隔离性也不是很好。

2)将中间层编写为MongoDB服务器上的服务器端执行代码。但是它们的限制太多(db.eval() 写锁,只有一个分片),而且似乎不推荐使用这个 MongoDB 功能。我一直在寻找可以扩展服务器端代码执行能力的 MongoDB 扩展,但没有找到。

3) 将中间层编写为独立的 Web 服务,例如 PHP、python 或 Node.js。我看到的主要问题 - MongoDB 在 BSON 中通信。许多中间层函数会做简单的 MondoDB 查询。比他们必须将结果重新编码为其他一些序列化标准(因为 BSON 是特定于 MongoDB 的),然后将结果发送给客户端——这在我看来是很大的浪费。

除非我们找到更好的解决方案,否则我们可能会选择变体 1),但我们将不胜感激任何建议。

4

2 回答 2

0

我将把我放在 Google 网上论坛上的答案放在这里。

第二点并不是真正的服务器端,而是更多地在 MongoDB 附带的内置 JS 引擎中运行。正如您所说,这将是一种糟糕的方式。

第三点不会那么糟糕,使用 PHP 或您只需使用 JSON 与其通信的单点入口和 MongoDB 的 PHP 驱动程序将为您完成艰苦的工作,无需担心 BSON。但是,它存在大量安全漏洞,一个是您需要打开一个直接接受 MongoDB 查询的接口,因此即使“安全”,该接口也会立即成为安全性黑洞。

在我看来,您最好不要选择第一点,因为这决定了您必须编写自己的库。相反,我会选择像 Kohona、Lithium 或 Yii 这样的 PHP 框架。像这样的东西可能是你最好的选择。

于 2012-11-27T08:37:20.297 回答
-1

我正在写这是一个答案,因为评论太长了。


关于第1)点,显然您不知道 PHP 是如何工作的,否则您会知道:

  • 移动应用程序是一个流行词。PHP 至少从 2004 年就开始为移动设备提供服务。
  • REST API.... PHP 是一种网络语言,一个 REST 类可以写在 20 行以下。
  • 安全性不取决于您使用什么,而是取决于您如何使用它。使用相同的逻辑,您是不安全的,因为您使用 MongDB 而不是$someOtherDbPackage.
于 2012-11-27T07:41:33.340 回答