在Akka.net中,与参与者选择对话还是与在消息中传递的IActorRef交互,哪个更有效?
发布于 2017-03-31 01:43:25
最好的答案是根据您的情况对其进行基准测试,因为这可能取决于多种条件(如本地/远程通信)。当我们讨论同一进程内的通信时,IActorRef应该总是更快。在远程通信中,差异可能较小,但仍然有利于IActorRef。
话虽如此,但重要的是要了解两者之间的区别:
IActorRef不再有效。如果它是稍后创建的,那么您的旧IActorRef就不必指向它。这就是为什么你可能会在你的演员死了的时候Context.Watch(actorRef)得到通知的原因之一。发布于 2017-04-20 22:37:19
我想你可能以错误的方式来处理这件事。我不确定哪一个在性能方面更“高效”。(尽管@Horusiath对两者之间的差异提供了一些很好的指导)
问题是,使用ActorSelection本身就有点反模式,通常建议您使用IActorRefs。请参阅本博客中的第三点:Petabridge: The Top 7 Mistakes Newbies Make with Akka.NET
简而言之,当使用Actor Refs时,actor的位置是透明的。您尝试与之交互的参与者可能在集群中的任何位置,当使用IActorRef时,这并不重要。
话虽如此,他们也有一个很好的小博客,关于什么时候ActorSelection可能有用……Petabridge: When Should I Use Actor Selection?
如果您正在权衡在代码中使用哪种链接,我建议您通读一下这两个链接。希望这能有所帮助!
https://stackoverflow.com/questions/43118662
复制相似问题