Обзор различных реализаций 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 не поддерживает вложенные приемы, но поддерживает горячую замену цикла сообщений актеров и имеет как потоковых, так и событийных актеров, а также так называемых однопотоковых.
Я понял, что Акка навязывает исчерпывающие совпадения. Таким образом, даже если технически получить ожидает частичную функцию, функция не должна быть частичной. Это означает, что вы должны обрабатывать каждое сообщение немедленно.