【问题标题】:Different Scala Actor Implementations Overview不同的 Scala Actor 实现概述
【发布时间】:2011-02-23 18:30:34
【问题描述】:

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

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

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


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

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

【问题讨论】:

标签: scala actor lift scalaz akka


【解决方案1】:

截至Scala 2.10,scala actor 现在已弃用,Akka Actors 现在是标准分发的一部分

【讨论】:

    【解决方案2】:

    【讨论】:

    • @Frank :您的链接也不再可用。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      Scala 2.7.7。与The Scala 2.8.0 RC3 distribution之后的2.8相比:

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

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

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2011-08-25
          • 1970-01-01
          • 1970-01-01
          • 2019-11-16
          • 2016-02-26
          • 2019-03-20
          • 1970-01-01
          • 2019-02-06
          • 1970-01-01
          相关资源
          最近更新 更多