不同的Scala Actor实现概述

Ste*_* K. 53 scala lift scalaz actor 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
    • hotswapping Actor的消息循环

RAb*_*ham 9

Scala 2.10开始,scala actor现已弃用,Akka Actors现在已成为标准发行版的一部分


Ste*_* K. 8

Scala 2.7.7.Scala 2.8.0 RC3发布后vs 2.8 :

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

还有一个Haller的设计文档:Scala Actors:统一基于线程和基于事件的编程


Ste*_* K. 6

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

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

与Scala相比,Akka不支持嵌套接收,但支持hotswapping actors消息循环,并且具有基于线程和基于事件的actor以及所谓的"基于事件的单线程".