在Akka.net中更有效率,与演员选择交谈或与消息中传递的IActorRef进行交互?
答案 0 :(得分:0)
最佳答案是根据您的情况对其进行基准测试,因为这可能取决于多种条件(如本地/远程通信)。当我们谈论同一过程中的沟通时,IActorRef
应该总是更快。在远程通信中,差异可能更小,但仍然支持IActorRef
。
话虽如此,重要的是要区分两者:
IActorRef
不再有效。如果稍后会创建它,则旧的IActorRef
无需指向它。这是为什么你可以Context.Watch(actorRef)
在你的演员去世时得到通知的原因之一。答案 1 :(得分:0)
我想也许你会以错误的方式来到这里。我不确定哪个更有效率'在表现方面。 (虽然@Horusiath对两者之间的差异提供了很好的指导)
问题在于使用ActorSelection本身就是一种反模式,并且通常建议您使用IActorRefs。请参阅此博客上的第3点:Petabridge: The Top 7 Mistakes Newbies Make with Akka.NET
总之; 使用Actor Refs时,actor的位置是透明的。您尝试与之交互的角色可能位于群集中的任何位置,使用IActorRef时无关紧要。
话虽如此,当ActorSelection可能有用时,他们也有一个不错的小博客...... Petabridge: When Should I Use Actor Selection?
如果您正在权衡代码中使用的内容,我建议您仔细阅读这两个链接。希望这有帮助!