注意: 很遗憾,此问题已关闭,但我将继续维护它,以备其他人出现相同的问题。
我一直在寻找一个良好的解决方案,用于开发一个Scala服务,它将位于移动设备和现有Web服务之间。
目前可行的选择列表如下:
可能还有更多的选择。如何决定使用哪个?一个好的Scala中间件选择应该具有哪些特点(请原谅双关语;-))。一方面,我想选择Akka,因为它是TypeSafe Scala堆栈的一部分,但另一方面,像Finagle这样的东西具有丰富的库和使编排变得很容易的功能。Spray看起来很好用。
任何建议、见解或经验都将不胜感激。我相信有人在这些中拥有一些经验,并乐于分享。
更新:
我希望重新打开这个问题。对这个问题的良好回答将帮助新的Scalateers避免相关陷阱。
更新2:
自从提出这个问题以来,这是我的经验:
Finagle - 我在一个项目中使用了Finagle,它非常稳定。
Spray - 在我的最新项目中,我正在使用Spray库,非常满意。最新版本基于Akka 2构建,可以直接使用Spray-can库运行,无需Web服务器。Spray是一组库,而不是框架,非常模块化。这个了解Spray:REST on Akka视频提供了很好的概述,而Cakesolutions的此博客展示了非常好的开发方法和架构。
更新3:
生活飞快过去。如果你不时停下来看看周围的环境,就可能错过了许多东西。——费里斯·布拉勒
现在选择变得更加简单。我谦虚地认为Spray已经赢得了这场争斗。它正在被集成到Akka中,成为下一个Akka HTTP。我现在已经在多个项目中使用了Spray,并且可以诚实地说,它是我遇到过的最棒且最受支持的软件。
这并没有回答最初的问题,但至少说明了为什么在大多数情况下Spray似乎是最好的选择。它非常灵活、非阻塞且非常稳定。它具有客户端和服务器端库以及一个出色的测试工具包。此外,查看这些性能统计数据,可以获得有关性能的概念:Web框架基准测试