翻译我使用Akka.Remote从ASP.NET Web应用程序在我的后端(托管作为Windows服务)调用一个演员。作为代码的一部分,我正在查找远程系统上可能存在或不存在的actor。ActorRefs.Nobody被远程处理
在调用如下客户端...
var profileActor = await someRemoteActor.Ask<IActorRef>(new LoadProfile("[email protected]"));
if (profileActor != ActorRefs.Nobody)
{
// Now do stuff with the profile
...
}
对事物的代码就是做这个远程端...
Receive<LoadProfile>(rq =>
{
IActorRef child = ActorRefs.Nobody;
if (ProfileExistsInTheDatabase(rq.Username))
{
child = Context.ActorOf<Profile>(rq.Username);
child.Tell(rq);
}
Sender.Tell(child);
};
这不是确切的代码,但是显示了如果在服务器端找不到东西,则返回ActorRefs.Nobody。现在
,问题是,当ActorRefs.Nobody回来给客户,它已经转换成远程演员的参考,这是我没想到。我曾期待ActorRefs.Nobody来遍历远程处理层,并将其作为客户端上的同一事物。
我错了,期望这种方式工作吗?我想是这样,因为它不符合我的预期,但一些澄清会很好。
现在我已经改变了代码返回,其中包括一个标志,指示远程演员是否存在消息类,但我宁愿能够使用ActorRefs.Nobody。
在此先感谢您的帮助。