用于Rest API服务器的Scala框架?[关闭]


105

我们正在考虑将Rest API服务器(在Symfony PHP上的Web服务中)移动到Scala的原因有以下几种:速度,无开销,较少的CPU,较少的代码,可伸缩性等。几天前,但我一直很享受这些天从Scala书籍以及所有博客文章和问题中学到的东西(这并不难看!)

我有以下选择:

  • 从头开始构建Rest API服务器
  • 使用像Scalatra这样的小型Scala Web框架
  • 使用升降机

我将不得不使用的一些东西:HTTP请求,JSON输出,MySQL(数据),OAuth,Memcache(缓存),日志,文件上传,统计信息(也许是Redis)。

你会推荐什么?

Answers:


87

没有特别的顺序:


1
谢谢!我将检查AKKA,因为它看起来非常轻便且可扩展
fesja

1
注意:我希望有人能将restfulie.caelum.com.br集成或移植到Scala。现在,一种选择是使用Restfulie作为JRuby上Scala的前端。
oluies 2010年

3
+1,我在工作中使用Akka来驱动高性能API服务器。将JAX-RS与Akka一起使用的不利之处在于,JAX-RS加载了很多Java特性,这些特性不太适合纯Scala项目。尽管如此,Akka还是值得整个交易。
Max A.

2
Akka是一个不错的选择。如果您要提供JSON,请查看Lift JSON。您可以混合搭配,没问题。
andyczerwonka 2011年

1
@santiagobasult我会说玩!2.0和迷你游戏!2.0发生了
幸运儿


15

看看Xitrum(我是它的作者),它提供了您列出的所有内容。它的文档非常广泛。从自述文件:

Xitrum是一个基于Netty和Hazelcast的异步集群Scala Web框架和Web服务器:

  • 按照JAX-RS的精神,注释用于URL路由。您不必在一个地方声明所有路线。
  • 秉承Netty的精神,实现异步。
  • 会话可以存储在cookie或群集的Hazelcast中。
  • 进程内缓存和群集缓存,您不需要单独的缓存服务器。
  • 进程内和群集的Comet,您不需要单独的Comet服务器。

7

我还要添加两个选项:具有内置JAX-RS支持的akka​​,以及直接使用JAX-RS(可能是Jersey实现)。尽管可以说“ Scala-y”比其他的“ Scala-y”要少(依靠注释来绑定参数和路径),但JAX-RS使用起来却很有趣,它以最小的占用空间干净地解决了Web服务编码的所有问题。我没有通过akka使用它,我希望它在那里是出色的,通过基于延续的实现会获得令人印象深刻的可伸缩性。


谢谢!我将以JAX-RS作为@Brent来检查AKKA,您说过。如果您想走得很快,它看起来非常轻巧且占用空间最小,这对于API而言非常重要。
fesja

1
您必须使用JAX-RS 2.0(当前为beta)来获得可伸缩性,因为较旧的版本依赖于讨厌的threadlocal(即不支持线程暂停和恢复)。
亚当·根特


3

到目前为止所有好的答案。Lift 备受青睐的一点是它的RestHelper,它可以很容易地编写简短而优雅的API方法。此外,您要执行的所有其他操作都应该在Lift中很简单地实现。话虽如此,Memcache可能不是必需的。


谢谢!您为什么不认为必须使用内存缓存?当然,这取决于情况,但是我们有几个查询很可能会不断执行,因此我们该赢了,减少了数据库的负载。
fesja

我真的只是摆脱了David Pollak昨天所说的话。基本上,Lift中的缓存会删除许多Memcache用例。这是他的信息,并且有关内存缓存的主题中还有其他几篇文章:groups.google.com/group/scala-base/msg/4b11cbd357bfecf0
pr1001 2010年

2

场景有点晚,但是我绝对会建议使用Bowler框架来创建REST API。它很小,要点和自动案例类转换支持!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.