我最近一直在编写Scala应用程序,对于那些需要Web UI的人来说,Play框架非常棒,但是我很难为没有UI的后端应用程序定义一个合理的库堆栈。 Play为这些无UI应用程序提供了两个非常有用的组件:良好的JSON支持和通过“sbt stage”方便的应用程序打包。但它也带来了许多未使用的行李,我宁愿削减这些后端应用程序。
我知道Scala标准库中的JSON支持基本消失了,而且存在像Jackson / Jerkson或Argonaut这样的选项,但我希望在应用程序之间使用统一的方法,而不是为了相同的目的而处理多个库。另外我知道sbt存在其他包装插件,但这会带来同样的问题。
对没有Web UI的应用程序使用Play是否有意义?伙计们真的这样做吗?如果是这样,我如何配置Play以这种方式工作? (例如,不启动HTTP侦听器:9000)。
非常感谢提前。
答案 0 :(得分:4)
当然,Play和REST应用程序一样很好用Spray(很快就是Akka HTTP)。 Spray将使用更少的资源,但Play也不是特别大。
归结为偏好。如果您喜欢以Play风格(声明式,快速开发循环)编写程序,并使用Spray(Akka HTTP),如果您更喜欢控制并希望将代码基于演员(消息传递,监督),请使用Play。
每个Play和Spray都有自己的JSON库,可以单独使用,但遗憾的是这些库不能相互交换。
我不了解您关于打包插件的问题,但Play使用sbt-native-packager。
要在Play中配置HTTP端口,请使用-Dhttp.port=1234
。看到
https://www.playframework.com/documentation/2.3.x/ProductionConfiguration了解所有细节。