我即将开始一个应该在 Tomcat 服务器上运行的 Web 应用程序的项目。我决定选择 Scala——我工作的另一个选择是 Groovy——主要是为了类型安全。我现在面临着为工作选择合适工具的任务。
我需要开发的项目只能通过 JSON API 访问。它将与自己的数据库和两个外部服务交互,这两个服务分别公开一个 JSON 和 XML API。我还需要能够安排定期作业,我的应用程序将使用这些外部服务执行各种同步任务。
对于数据库,我希望能够在 Scala 中定义我的模型并自动生成模式。如果需要更改我的模型,我希望有迁移来处理它。
对于这个应用程序,我正在尝试评估 Lift, Play!2和斯卡拉特拉。
电梯是我的第一选择。它是三个项目中最成熟的,并且似乎被认为是高度安全的(我不想在安全性上妥协)。此外,它还具有似乎是 Scala 中最好的 JSON 处理库。尽管如此,在涉足它之后,我不确定这是否是正确的选择。该文档并不是我见过的最好的。此外,在我看来,Record + Squeryl 似乎比 Mapper 更好,但这种用法的文档更加稀缺。最后,虽然 Lift 确实可以用于创建 Web 服务,但它的真正优势似乎在于状态处理,因此我不相信我的项目需要额外的复杂性。
玩!2似乎有更好的文档,对我来说看起来更熟悉(我来自 Django 背景)。同样,它的默认数据库抽象并没有真正让我满意:ANORM 依赖于 SQL,它对类型检查没有帮助。无论如何我都必须使用 Squeryl,我不确定这个用例的文档是否一样好。此外,部署 Play!2 个应用程序目前比我想要的更复杂。一个必须安装播放!在生产服务器上,我不确定这是我工作的选项。否则,有一个插件可以让它与 servlets 容器一起工作,但它是非常新的,我不确定它有多稳定/可靠。
最后还有使用Scalatra的选项。Scalatra 似乎很容易设置,它的设计正是为了创建 Web 服务。折衷方案是 Scalatra 没有提供太多功能。它没有与现有的 ORM 集成,也没有建议如何组织应用程序的模型部分,也无助于设计 cron 或命令行任务。我也不确定该项目的长期未来。
你认为什么是我的任务的最佳选择?