我需要开发 REST API 以将 CRUD 操作公开给数据库和一些业务逻辑。我更喜欢这个模块是独立的、快速的、可扩展的和灵活的(没有不必要的模块提供我不需要的功能,以降低维护成本)。
发展偏好:
- 进行类型检查的框架/语言
- 具有良好的 ORM 映射
- 具有良好的 TDD/BDD 支持
- 函数式语言
我想知道诸如 squeryl 和 blue eyes 或 squeryl 和 spary 之类的 scala 模块的某种组合是否可以达到目的,但它不一定是 scala。有什么想法吗?
最佳答案
你所描述的情况当然是可能的。我没有任何使用 Spray 或 BlueEyes 的经验,但我确实使用过 Squeryl + Play,并且它可以做你想做的事情。它可能提供您不需要的模块,但如果您不使用它们,这些模块不会增加维护成本。
最大的问题是大多数(如果不是全部)Scala 框架都是围绕异步编程模型设计的(实际上大多数其他高可扩展性框架也是如此,例如 Node.js)。另一方面,ORM 通常是围绕同步编程模型构建的。但是,您可以通过一些粘合代码、一些防御性编码和一些仔细的调整(这就是我们所做的)来解决这种不匹配问题。
更激进的替代方案是将 ORM 替换为 MongoDB 或 CouchDB 等文档数据库(文档数据库通常具有合理的异步驱动程序)。
关于用于公开 ORM 方法的可扩展且快速的 REST API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15927258/