不同的Scala Actor实现概述

时间:2010-05-25 15:38:09

标签: scala actor lift scalaz akka

我正试图找到'正确'的演员实现。我意识到有一堆它们,选择一个有点令人困惑。就个人而言,我对远程演员特别感兴趣,但我想完整的概述会对很多人有所帮助。这是一个相当普遍的问题,所以请随意回答您所了解的实施。

我知道以下Scala Actor实现(SAI)。请添加遗漏的。

  • Scala 2.7(差异)
  • Scala 2.8
  • Akka(http://www.akkasource.org/
  • 举起(http://liftweb.net/
  • Scalaz(http://code.google.com/p/scalaz/


  • 这些SAI的目标用例是什么(轻量级与“重型”企业框架)?

  • 他们支持远程演员吗?远程参与者在最高审计机关中有哪些缺点?
  • 他们的表现如何?
  • 社区有多活跃?
  • 他们开始有多容易?文件有多好?
  • 他们有多容易延长?
  • 他们有多稳定?哪些项目正在使用它们?
  • 他们的缺点是什么?
  • 他们的设计原则是什么?
    • 他们是基于线程还是基于事件(接收/反应)或两者兼而有之?
    • 嵌套的receiveS
    • 热播了Actor的消息循环

5 个答案:

答案 0 :(得分:18)

答案 1 :(得分:9)

Scala 2.10起,scala actors现已弃用,Akka Actors现已成为标准发行版的一部分

答案 2 :(得分:8)

Scala 2.7.7。 The Scala 2.8.0 RC3 distribution之后的vs 2.8:

New Reactors提供更轻量级,纯粹基于事件的actor,带有可选的隐式发件人标识。添加了对具有守护程序样式语义的actor的支持。可以将Actor配置为使用高效的JSR166y fork / join池,从而显着提升1.6 JVM的性能。调度程序现在可以插入,更容易定制。

还有一个Haller的设计文档:Scala Actors: Unifying Thread-based and Event-based Programming

答案 3 :(得分:6)

据我所知,只有Scala和Akka支持远程演员。

Akka由scalablesolutions支持,它为akka提供商业支持和插件。 Akka似乎是一个重量级的解决方案,它的目标是与现有框架(驼峰,AMQP,JTA,Comet,Spring,Redis)以及STM和持久性集成。

与Scala相比,Akka不支持嵌套接收,但支持热插拔actor消息循环,并且同时具有基于线程和基于事件的actor以及所谓的“基于事件的单线程”。

答案 4 :(得分:3)

我意识到akka强制执行详尽的比赛。因此,即使技术上接收期望部分功能,该功能也不能是部分功能。这意味着您必须立即处理每条消息。