我们使用PHP前端和MongoDB作为数据库来规划web项目(会计软件)。此外,可能还会有iPhone和安卓的移动aps,可能的REST等等。我们需要用尽可能多的共享功能在原始数据库(设计模式MVC或MVP中的“模型”)上编写中间层。在这种情况下编写中间层的明智方法是什么?
我们正在考虑的备选方案:
1)将中间层编写为PHP库。外加:超级容易连接到PHP前端,但不太适合其他用例(移动aps,REST .)。编辑:在安全性和隔离方面也不是很好。
2)在服务器端执行代码服务器上将中间层写成MongoDB。但是它们有太多的限制(db.eval()写锁,只有一个碎片),而且似乎不建议使用这个MongoDB功能。我在寻找可以扩展服务器端代码执行功能的MongoDB扩展,但没有发现任何扩展。
3)将中间层编写为独立的web服务,例如在PHP、python或Node.js中。我看到的主要问题- MongoDB在BSON中的通信。许多中间层函数将执行简单的MondoDB查询。比他们必须重新编码导致其他序列化标准(因为BSON是特定于MongoDB ),然后发送结果到客户端-这在我看来是很大的浪费。
除非我们找到更好的解决方案,否则我们可能会选择变体1),但是任何建议都会受到欢迎。
发布于 2012-11-27 08:37:20
我会在这里给出我在谷歌群组上的答案。
第二点并不是真正的服务器端,而是运行在MongoDB附带的内置JS引擎中。正如你所说的,这将是一种很糟糕的方法。
第三点不会那么糟糕,使用PHP创建一个入口点,或者使用JSON和MongoDB的PHP驱动程序进行通信就可以帮到您了,不需要担心BSON。然而,它也存在巨大的安全缺陷,其中之一是您需要打开一个直接接受MongoDB查询的接口,因为即使“安全”,这个接口也是安全方面的一个黑洞。
在我看来,使用第一点并不更好,因为这决定了您必须编写自己的库。相反,我会选择一个PHP框架,比如Kohona、Yii或Yii。这样的事可能是你最好的选择。
发布于 2012-11-27 07:41:33
我写这是一个答案,因为它太长,不能发表评论。
关于1),您显然不知道PHP是如何工作的,否则您就会知道:
$someOtherDbPackage。https://stackoverflow.com/questions/13575514
复制相似问题