已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新问题,以便editing this post可以用事实与引用来回答.
两年前就关门了。
Improve this question
现在我正在学习 akka 。但是我发现 akka 有两个版本:经典的和类型化的。它和我应该学习的有什么区别?
类型化版本是否有更强的类型控制?如果有,为什么只在2.6版本中引入?
谢谢你的回答。
已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新问题,以便editing this post可以用事实与引用来回答.
两年前就关门了。
Improve this question
现在我正在学习 akka 。但是我发现 akka 有两个版本:经典的和类型化的。它和我应该学习的有什么区别?
类型化版本是否有更强的类型控制?如果有,为什么只在2.6版本中引入?
谢谢你的回答。
1条答案
按热度按时间z0qdvdin1#
“经典”参与者是无类型的。您定义一个接受
Any
对象的参与者,并使用模式匹配来定义它将实际处理哪些消息。必须为每个参与者定义的
receive
是PartialFunction[Any, Unit]
。它不能防止您将消息发送给错误的参与者-一个会自动忽略它的参与者。它不能防止您发送错误类型的消息。您可以将所有消息发送给每个人。从某种Angular 来看,您有一个并发模型-构建在强类型语言之上-它与JavaScript一样是强类型的。
Akka Typed所做的是让你通过类型化的 Package 器发送消息,而不使用类型化的参与者:
这样您就可以:
Behavior
),它告诉您它们接受哪种类型的消息ActorRef
,这将帮助您只向参与者发送正确类型的消息ActorSystem
,它定义了可以直接发送到参与者系统的消息类型。它是“最近”才提出的,但有关它的工作持续了几年,它只是最近的代码达到了它的创造者的预期成熟度。模块existed in repo for at least 2 years,但从我的记忆中,它的工作已经持续了一段时间。第一个问题标记为有关Akka类型是从May 2017,但工作的任何“类型演员”最早可以追溯到May 2014(这意味着作者们已经讨论了一段时间,尽管这些earlier concepts与我们今天所拥有的略有不同)。
长话短说就是(对大多数人来说,大部分时间,YMMV)更好,但需要时间才能做对,如果你想在格林菲尔德项目中使用它们(由于某种原因必须使用演员)那么我会建议Typed。如果你必须在现有的项目中与演员一起工作,那么几乎可以肯定他们会使用经典,所以如果你想靠 akka 谋生的话你就得知道这两点。