我们计划使用 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),但我们将不胜感激任何建议。