Scala web微框架

Yan*_*ang 20 scala web-frameworks

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

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

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

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

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

小智 11

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

如果您对面向组件的UI感到好奇,Bowler确实支持Scalate的Scuery风格,结合Bowler提供了一个非常可组合的UI风格,深受Apache Wicket的影响.

就前端与服务器端而言,Bowler强烈认为客户端代码(JavaScript/CSS)是客户端代码,服务器端代码是服务器端代码.JavaScript与服务器端Scala代码没有讨厌的"集成",相反,您应该在客户端和服务器上使用同类最佳,通过常见的,易于理解的格式(如JSON)进行集成.


Jon*_*nas 6

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

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

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

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


ove*_*ink 6

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

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

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

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

工作在进步书籍和文档在这里.