翻譯我使用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。
在此先感謝您的幫助。