Я пытаюсь найти 'правильную' реализацию агента. Я понял, что существует набор их, и это немного сбивает с толку для выбора того. Лично я особенно интересуюсь удаленными агентами, но я предполагаю, что полный обзор был бы полезен многим другим. Это - довольно общий вопрос, поэтому не стесняйтесь отвечать только за реализацию, о которой Вы знаете.
Я знаю о следующих Реализациях агента Scala (SAI). Добавьте недостающие.
Scalaz (http://code.google.com/p/scalaz/)
Каковы целевые примеры использования для них САИС (легкий вес по сравнению с "тяжелой" платформой предприятия)?
Насколько мне известно, только Scala и Akka поддерживают удаленных участников.
Akka поддерживается масштабируемыми решениями, которые предлагают коммерческую поддержку и плагины для akka. Akka кажется тяжелым решением, которое нацелено на интеграцию с существующими фреймворками (camel, AMQP, JTA, Comet, Spring, Redis), а также с STM и постоянством.
Akka по сравнению со Scala не поддерживает вложенные приемы, но поддерживает горячую замену цикла сообщений акторов и имеет как потоковые, так и основанные на событиях акторы, а также так называемые «однопоточные на основе событий».
Scala 2.7.7. против 2.8 после Дистрибутива Scala 2.8.0 RC3:
Новые реакторы обеспечивают более лёгкие, чисто событийные акторы с необязательной, неявной идентификацией отправителя. Добавлена поддержка акторов с семантикой в стиле демона. Акторы могут быть настроены на использование эффективного пула JSR166y fork/join, что приводит к значительному повышению производительности на JVM версии 1.6. Планировщики теперь подключаемые и легче настраиваются.
Также есть проектный документ Haller: Scala Actors: Унификация программирования на основе потоков и событий
Я понял, что акка требует исчерпывающих совпадений. Таким образом, даже если технически receive ожидает частичную функцию, функция не должна быть частичной. Это означает, что вы должны обрабатывать каждое сообщение немедленно.