Akka.Net从非Actor类中调用Actor类内的动作

问题描述 投票:0回答:1

标题几乎说明了一切。我想从一个非Actor类中调用一个Actor类中的Action,该非Actor类与Actor不在同一文件夹中。

action actor akka.net
1个回答
0
投票

在演员模型中,您不会在演员上“调用动作”。您可以询问某些东西或tell某些东西。为此,您需要演员的地址,在akka.net中,您需要IActorRef

我不确定您所说的“文件夹”是什么意思,我只列举可能的含义和每种方法的答案:

  1. 相同的物理文件夹
    • 演员类的物理位置和“呼叫类”的物理位置与向演员发送消息的能力无关。
  2. 相同的名称空间文件夹
    • 名称空间不会直接影响向参与者发送消息的能力。它可能仅受要发送的消息类的visibility的影响。
  3. 相同地址文件夹
    • 同样,地址文件夹不影响向演员发送消息的能力。

为了能够向演员发送消息,您只需要它是IActorRef,有很多方法可以管理那些我在这里不写的引用,因为这取决于您的应用程序体系结构。

但是,我将提到您还可以使用ActorSystem.ActorSelection方法来获取位于某个path上的actor的引用,但是建议not,因为它可能很容易滥用,会导致一些不良习惯。它的用法应被视为高级功能。

一旦获得了actor参考,您就可以从非actor类中调用Ask方法,如果您希望得到一些结果(请注意,结果将包装在必须管理的Task中)检索结果)。如果您不希望得到答案(或者您不关心响应),则可以只调用Tell方法。您必须将消息传递给发送给Actor的这两种方法。

最后,当actor收到您的消息后,您的消息将最终被处理,然后actor将执行其设计要执行的任何操作。

如果尚未完成,bootcamp是学习akka.net基础的好方法。

© www.soinside.com 2019 - 2024. All rights reserved.