我目前正在计划一个新项目,该项目涉及一些概念验证原型,以便在真正的应用程序从中发展之前进行测试。 该应用程序将主要是一个iOS应用程序,它通过WebService与远程服务器上的数据库进行通信,这是非常基本的东西。
由于我总是需要很长时间来配置SQL数据库并为服务器编写应用程序(RESTful API),因此我开始阅读NoSQL数据库的可能性以及它们与远程服务器进行通信/同步的预建可能性。 就我对这些事情的理解而言,这显然会减少服务器部分所需的工作。
现在我开始阅读MongoDB以及Eve(Python),它扩展了MongoDB提供的HTTP REST API。由于他们的RESTful API提供了测试原型所需的一切,我开始问自己为什么我甚至可以编写自己的REST API,如果我可以从Eve的API获得我需要的一切?
使用Eve和MongoDB的缺点是什么?围绕我的MongoDB实例编写自己的RESTful API有什么好处?!
答案 0 :(得分:2)
通常,使用预先打包的库可以在开发周期的早期阶段获得好处,您可以通过不专注于可能使构建概念验证应用程序的挑战和耗时的细节和淤泥来快速取得进展。
如果您只是构建PoC,那么通常情况并不重要,除非您还需要验证架构选择。例如,可能很容易将简单文档模型与您的iOS应用程序连接起来,但在现有框架上添加一层安全性可能很困难(我一般都说)。或者,由于没有对数据模型给予足够的重视,以后很难在关系数据库中对数据库进行建模,或者即使在使用与PoC中使用的相同技术时,它也不会在负载下很好地扩展)。
通过构建或扩展您自己的Restful API,您可以完全控制整个体验。今天的许多Web平台都使构建一个非常自然的API非常自然,因此开发人员可以专注于应用程序逻辑,而不是架构的管道。因此,您可能不需要采用完整的端到端框架解决方案。
框架通常是固执己见的,通常不是任何官方规范。一旦您将代码移到PoC之外,您就会想要确定生产系统的风险在哪里。有多少活动部件和小部件?如果出现问题怎么办?你能理解这些互动吗?是否可以为该平台提供支持?图书馆是否得到了积极维护,并且支持列表上的问题是长期的,可解决的等等?
如果您稍后决定使用备用数据库平台,那么使用面向文档的数据库(如MongoDb或CouchDb)的挑战将是技术转移。如果需要调整,请考虑您的业务逻辑和数据库代码与您使用的各种框架交织在一起的方式。如果您启动RDBMS并尝试切换到Document数据库,则会出现同样的问题。无论起点如何,在两者之间转换数据模型都非常复杂。
对于你将要扔掉的PoC,使用快速完成任务的东西。如果还有更多,那么您需要考虑它是如何适合的。
Eve有一个小issues列表,经常更新,并且有很好的文档。最终的决定取决于你。
答案 1 :(得分:2)
[免责声明:我是项目作者。]
Eve的一个独特优势是您可以获得许多开箱即用的功能,我相信这些功能非常适合快速原型设计和PoC。您可以快速启动并快速运行,只需更新settings.py
即可在一分钟内更改您的API架构/行为(如果您在调试模式下运行应用程序,它将在每次保存时重新启动)。您甚至不必创建数据库,因为如果数据库丢失,它将为您创建。
实际上我们有一个Heroku实例可以做到这一点,我们通过使用免费的MongoHQ实例(或MongoLab,目前还不确定)作为一次性数据存储区添加新的端点和文档字段来一直蚕食它(只需根据需要清理数据库,但大部分时间我们都不需要这样做,这要归功于mongo的无模式设计。)
毋庸置疑,如果您打算在生产中使用它,请不要在调试模式下运行您的应用程序或让它为您创建数据库;-)
PS:据记载,Eve首先构建的原因是为我们的iOS / Android应用程序提供Web服务。