Scala web微框架

时间:2011-07-08 20:07:15

标签: scala web-frameworks

我正在寻找具有以下某些属性的Scala Web框架。

  • 模块化,以防万一(比方说)我不想使用框架默认使用的特定模板语言或数据库接口。
  • 避免“神奇”或令人讨厌的设计决策(一般偏好Unfiltered的功能样式) - 线程本地请求/响应对象,反射(参见Bowler的函数名称约定)等等。
  • 数据库接口。任何支持与SQLAlchemy相同程度的灵活性(ORM和SQL支持,平滑的互操作和逃生舱)?
  • 模板/视图语言。这里非常灵活,尽管我对基于组件的方法很感兴趣。
  • 性能,可扩展性(Comet支持)。

适合该法案的最佳Scala网络微框架是什么?我一直在关注的一些框架:

  • Scalatra的
  • Bowler(以Scalatra为基础)
  • 播放(Scala界面)
  • 抑扬
  • 未过滤(最小HTTP请求处理,无数据库接口/模板语言)

但是,如果不花时间玩所有这些,就很难分辨出使用什么。

4 个答案:

答案 0 :(得分:11)

Bowler 几乎是 Scalatra + Scalate ,其中一些强制/推动开发人员采用了良好的REST实践,例如正确使用Content-Type和Accept HTTP Headers来响应和发出HTML和JSON,并以适当的方式处理GET,POST,DELETE和PUT(并且更难以使用GET和DELETE)。

如果您对面向组件的UI感到好奇,Bowler会support Scalate's Scuery style,它与Bowler相结合,提供了一个非常可组合的UI风格,深受 Apache Wicket 的影响。

就前端与服务器端而言,Bowler takes quite a strong view that client-side code(JavaScript / CSS)是客户端代码,服务器端代码是服务器端。 JavaScript与服务器端Scala代码没有讨厌的“集成”,相反,您应该在客户端和服务器上使用最佳类型,通过常见的,易于理解的格式(如JSON)进行集成。

答案 1 :(得分:6)

我喜欢Scala的Play Framework。但是Scala模块还没有支持异步内容(例如websockets)。而且Anorm - 数据库抽象还不是很成熟。

但我喜欢这个框架,因为它非常轻巧,性能良好且易于理解。

Play Framework受Ruby on Rails的启发,开发周期非常短 - 只需保存Scala源文件并更新Web浏览器即可。源文件由框架自动编译,它直接在浏览器中显示信息性编译器错误消息。它还与包括Selenium在内的测试框架很好地集成。

Play Framework使用了一个使用事件驱动架构构建的高性能服务器框架(Netty),这可以在彗星应用程序中提供比传统Java Servlet容器之类的基于线程的服务器更好的性能。

答案 2 :(得分:6)

不确定它是否属于“微框架”,但我喜欢Lift。我没有真正看过你建议的其他人,但这里有一些关于Lift的评论:

  • 很大,但你可以选择你想要使用的部分
    • 我从不打扰它的大部分内容:例如数据库界面,魔术形式,屏幕,向导,......
  • 设计师友好的视图/模板非常好
  • 我喜欢重写规则的完成方式
  • 我的经历表现非常好
  • Box很棒
  • 大而有益的社区

Lift确实有Request和Session范围的变量。我喜欢它们,但它们可能属于你对“令人讨厌”设计的描述。

它还包括一个应该非常好的彗星实现,虽然我自己没有使用它。

正在进行的书和文档here

答案 3 :(得分:4)

最好的是比赛和举起。电梯是如此复杂和一个有状态的框架。游戏非常简单,轻便且无状态,因此可以轻松扩展。 Typesafe.com(scala home)是用play / scala制作的,而play和scala也有增加的趋势。模块化和性能取决于类固醇,有很多模块可供使用,模板系统性能接近原始java / scala代码(比lift或jsp好得多)。数据库接口Anorm在游戏中比hibernate更简单,更高效,也易于调试。 play / scala中的模板系统与asp.net mvc 3 razor模板系统几乎相同,它是jvm世界IMO中的最佳状态,也可以使用其他像scalate(带有游戏scalate模块)但剃须刀要好得多

的问候, Serdar Irmak