53

我正在尝试找到“正确”的演员实现。我意识到有一堆,选择一个有点令人困惑。就我个人而言,我对远程演员特别感兴趣,但我想完整的概述会对许多其他人有所帮助。这是一个非常笼统的问题,因此请随意回答您所了解的实现。

我知道以下 Scala Actor 实现 (SAI)。请补充缺少的。

  • Scala 2.7(区别于)
  • 斯卡拉 2.8
  • 阿卡(http://www.akkasource.org/
  • 电梯(http://liftweb.net/
  • 斯卡拉兹 ( http://code.google.com/p/scalaz/ )


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

  • 他们支持远程演员吗?远程参与者在 SAI 中有哪些缺点?
  • 他们的表现如何?
  • 社区有多活跃?
  • 他们上手有多容易?文档有多好?
  • 它们有多容易扩展?
  • 它们有多稳定?哪些项目正在使用它们?
  • 他们的缺点是什么?
  • 他们的设计原则是什么?
    • 它们是基于线程还是基于事件(接收/反应)或两者兼而有之?
    • 嵌套接收
    • 热交换 Actor 的消息循环
4

5 回答 5

18

这是迄今为止我看到的最全面的比较:

http://doc.akka.io/docs/misc/Comparison_between_4_actor_frameworks.pdf通过http://klangism.tumblr.com/post/2497057136/all-actors-in-scala-compared

于 2010-12-28T16:02:22.247 回答
9

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

于 2013-01-17T20:00:57.727 回答
8

斯卡拉 2.7.7。与Scala 2.8.0 RC3 发行版之后的 2.8相比:

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

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

于 2010-05-28T12:09:17.527 回答
6

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

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

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

于 2010-05-25T15:59:26.037 回答
3

我意识到 akka 强制执行详尽的匹配。因此,即使在技术上接收期望一个偏函数,该函数也不能是偏函数。这意味着您必须立即处理每条消息。

于 2010-07-05T08:36:59.320 回答