选择 Scala Web 框架 [关闭]
Posted
技术标签:
【中文标题】选择 Scala Web 框架 [关闭]【英文标题】:Choosing a Scala web framework [closed] 【发布时间】:2012-07-30 04:09:40 【问题描述】:我即将开始一个应该在 Tomcat 服务器上运行的 Web 应用程序的项目。我决定选择 Scala——我工作的另一个选择是 Groovy——主要是为了类型安全。我现在面临着为工作选择合适工具的任务。
我需要开发的项目只能通过 JSON API 访问。它将与自己的数据库和两个外部服务交互,这两个服务分别公开一个 JSON 和 XML API。我还需要能够安排定期作业,我的应用程序将使用这些外部服务执行各种同步任务。
对于数据库,我希望能够在 Scala 中定义我的模型并自动生成模式。如果需要更改我的模型,我希望有迁移来处理它。
对于这个应用程序,我正在尝试评估 Lift, Play! 2 和 Scalatra。
电梯是我的第一选择。它是三个项目中最成熟的,并且似乎被认为是高度安全的(我不想在安全性上妥协)。此外,它还具有似乎是 Scala 中最好的 JSON 处理库。尽管如此,在涉足它之后,我不确定这是否是正确的选择。该文档并不是我见过的最好的。此外,在我看来,Record + Squeryl 似乎比 Mapper 更好,但这种用法的文档更加稀缺。最后,虽然 Lift 确实可以用于创建 Web 服务,但它的真正优势似乎在于状态处理,因此我不相信我的项目需要额外的复杂性。
玩! 2 似乎有更好的文档,对我来说看起来更熟悉(我来自 Django 背景)。同样,它的默认数据库抽象并没有真正让我满意:ANORM 依赖于 SQL,它对类型检查没有帮助。无论如何我都必须使用 Squeryl,我不确定这个用例的文档是否一样好。此外,部署 Play! 2 个应用程序目前比我想要的更复杂。一个必须安装播放!在生产服务器上,我不确定这是我工作的选项。否则,有一个插件可以让它与 servlets 容器一起工作,但它是非常新的,我不确定它有多稳定/可靠。
最后可以选择使用 Scalatra。 Scalatra 似乎很容易设置,它的设计正是为了创建 Web 服务。折衷方案是 Scalatra 没有提供太多功能。它不与现有的 ORM 集成,也不建议如何组织应用程序的模型部分,也无助于设计 cron 或命令行任务。我也不确定该项目的长期未来。
你认为我的任务的最佳选择是什么?
【问题讨论】:
请解释投票结束并发表评论,以便我改进我的问题。 我会尝试猜测:这是因为像这样的问题(这里是 X,Y,Z -- what is the best?)没有硬参数往往会给出主观和主观的答案。 AFAIK,您列出的所有框架都适合 用 JSON 讨论,数据库的自动模式。或许还有其他原因。 好吧,我以为我给了一些参数:好的文档,只需要Web服务接口,需要能够调度任务,需要能够可靠地部署在Tomcat上,处理架构迁移。 在没有任何关于如何改进它的评论的情况下关闭问题有点烦人,在爱之夏更是如此:-/ blog.***.com/2012/07/kicking-off-the-summer-of-love 【参考方案1】:如果您来自 MVC 背景,那么 Play 会感觉最熟悉。 Lift 不是 MVC,它需要一些时间来理解它。
没有理由不能将 Scala 与基于 Java 的框架(如 Jersey、Spring MVC、Dropwizard、Restlet、RESTEasy 等)一起使用。或者您可以将 Scala 与 Grails 一起使用,就像您可以将 Java 与圣杯。注意 - Groovy 从 2.0 版开始具有类型安全性,因此需要考虑这一点。
如果您正在考虑使用 Scalatra,请不要忘记 Spray、Unfiltered、BlueEyes...
请务必查看 Matt Raible 的 comprehensive comparison of web frameworks。还有这些其他的问题: Scala framework for a Rest API Server?, How to implement a REST Web Service using Akka?
【讨论】:
【参考方案2】:虽然你已经给了一些候选人,但我向你推荐 Tim Perrett 的演讲(Lift in Action 的作者,他在其中比较了 scala webframeworks: http://skillsmatter.com/podcast/scala/scalable-language-web
【讨论】:
以上是关于选择 Scala Web 框架 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章