Обзор различных реализаций Scala Actor

Я пытаюсь найти "правильную" реализацию актера. Я понял, что их куча, и немного сложно их выбрать. Лично меня особенно интересуют удаленные актеры, но я думаю, что полный обзор был бы полезен для многих других. Это довольно общий вопрос, поэтому не стесняйтесь отвечать только за реализацию, о которой вы знаете.

Я знаю о следующих реализациях Scala Actor (SAI). Пожалуйста, добавьте недостающие.

  • Scala 2.7 (отличие от)
  • Scala 2.8
  • Акка ( http://www.akkasource.org/)
  • Лифт ( http://liftweb.net/)
  • Скалаз ( http://code.google.com/p/scalaz/)


  • Каковы целевые сценарии использования для этих ВОФК (легковесная или "тяжелая" корпоративная среда)?

  • они поддерживают удаленных актеров? Какие недостатки есть у удаленных актеров в ВОФК?
  • Как их выступление?
  • Насколько активно там сообщество?
  • Насколько легко им начать? Насколько хороша документация?
  • Насколько легко они расширяются?
  • Насколько они стабильны? Какие проекты их используют?
  • Каковы их недостатки?
  • Каковы их принципы дизайна?
    • Они основаны на потоках или событиях (получают / реагируют) или на обоих?
    • Вложенный получает
    • горячая замена цикла сообщений актера

5 ответов

Это наиболее полное сравнение, которое я видел до сих пор:

http://doc.akka.io/docs/misc/Comparison_between_4_actor_frameworks.pdf через http://klangism.tumblr.com/post/2497057136/all-actors-in-scala-compared

Начиная с Scala 2.10, актеры scala теперь устарели, а Akka Actors теперь является частью стандартного дистрибутива.

Scala 2.7.7. против 2.8 после дистрибутива Scala 2.8.0 RC3:

Новые Reactors предоставляют более легкие актеры, основанные исключительно на событиях, с необязательной неявной идентификацией отправителя. Добавлена ​​поддержка актеров с семантикой в ​​стиле демона. Актеры могут быть сконфигурированы для использования эффективного пула JSR166y ветвления / соединения, что приводит к значительному повышению производительности на 1.6 JVM. Планировщики теперь подключаемые и их проще настраивать.

Есть также проектный документ Haller: Scala Actors: унификация потокового и событийного программирования.

Насколько я знаю, только Scala и Akka поддерживают удаленных актеров.

Akka поддерживается масштабируемыми решениями, которые предлагают коммерческую поддержку и плагины для akka. Akka выглядит как тяжеловесное решение, которое нацелено на интеграцию с существующими фреймворками (верблюд, AMQP, JTA, Comet, Spring, Redis) и дополнительно с STM и постоянством.

Акка по сравнению со Scala не поддерживает вложенные приемы, но поддерживает горячую замену цикла сообщений актеров и имеет как потоковых, так и событийных актеров, а также так называемых однопотоковых.

Я понял, что Акка навязывает исчерпывающие совпадения. Таким образом, даже если технически получить ожидает частичную функцию, функция не должна быть частичной. Это означает, что вы должны обрабатывать каждое сообщение немедленно.

Другие вопросы по тегам