我即将启动一个应在 Tomcat 服务器上运行的 Web 应用程序项目。我决定选择 Scala——我工作的 Groovy 的另一种选择——本质上是为了类型安全。我现在面临的任务是为工作选择合适的工具。
我需要开发的项目只能通过 JSON API 访问。它将与自己的数据库和两个外部服务交互,这两个服务分别公开 JSON 和 XML API。我还需要能够安排定期作业,我的应用程序将在其中与这些外部服务执行各种同步任务。
对于数据库,我希望能够在 Scala 中定义模型并自动生成架构。如果需要更改我的模型,我希望有迁移来处理它。
对于此应用程序,我正在尝试评估 Lift, Play! 2 和斯卡拉特拉。
Lift是我的第一选择。它是三个项目中最成熟的,并且似乎被认为是高度安全的(我不想在安全性上妥协)。此外,它还具有 Scala 中最好的 JSON 处理库。不过,在尝试了一下之后,我不确定这是否是正确的选择。该文档并不完全是我见过的最好的。此外,在我看来,Record + Squeryl 似乎是比 Mapper 更好的抽象,但这种用法的文档更加匮乏。最后,虽然 Lift 当然可以用来创建 Web 服务,但它的真正优势似乎在于状态处理,因此我不相信我的项目需要额外的复杂性。
Play! 2似乎有更好的文档,并且对我来说看起来更熟悉(我来自 Django 背景)。同样,它的默认数据库抽象并没有真正让我满意:ANORM 依赖于 SQL,这对类型检查没有帮助。无论如何我都必须使用 Squeryl,而且我不确定这个用例的文档是否同样好。此外,部署 Play! 2 应用程序目前比我想象的要复杂。必须安装 Play!在生产服务器上,我不确定这是否是我工作的一个选项。否则,有一个插件可以使其与 servlet 容器一起使用,但它非常新,我不确定它的稳定性/可靠性如何。
最后有一个使用的选项Scalatra。 Scalatra 看起来非常容易设置,而且它的设计正是为了创建 Web 服务。妥协的办法是 Scalatra 不提供太多功能。它不与现有的 ORM 集成,也不建议如何组织应用程序的模型部分,并且对设计 cron 或命令行任务没有帮助。我也不确定该项目的长期未来。
您认为完成我的任务的最佳选择是什么?
如果您有 MVC 背景,那么 Play 会感觉最熟悉。 Lift 不是 MVC,您需要一些时间来理解它。
没有理由不能将 Scala 与基于 Java 的框架(如 Jersey、Spring MVC、空投向导 http://dropwizard.codahale.com/、Restlet、RESTEasy 等。或者您可以将 Scala 与 Grails 一起使用,就像将 Java 与 Grails 一起使用一样。注意 - Groovy 从 2.0 版开始具有类型安全性,因此这是需要考虑的事情。
如果您正在考虑 Scalatra 那么不要忘记Spray https://github.com/spray/spray/wiki/, 未过滤 http://unfiltered.databinder.net/Unfiltered.html, BlueEyes https://github.com/jdegoes/blueeyes...
一定要看看马特·雷布尔的Web框架综合比较 http://www.slideshare.net/mraible/comparing-jvm-web-frameworks-jfokus-2012。还有其他这些问题:Rest API 服务器的 Scala 框架? https://stackoverflow.com/questions/3678795/scala-framework-for-a-rest-api-server, 如何使用 Akka 实现 REST Web 服务? https://stackoverflow.com/questions/6668999/how-to-implement-a-rest-web-service-using-akka
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)