Akka. Net Вызов действия внутри класса Actor из класса не-Actor - PullRequest
0 голосов
/ 09 января 2020

Название в значительной степени говорит обо всем. Я хочу вызвать Action в классе Actor из класса не-Actor, который не находится в той же папке, что и Actor, если это возможно.

1 Ответ

1 голос
/ 19 января 2020

В модели актера вы не «вызываете действие» на актере. Вы можете попросить что-то или сказать что-то. Для этого вам нужен адрес актера, в akka. net вам нужен IActorRef.

Я не уверен, что вы подразумеваете под «папкой», я просто перечислю возможные значения и ответ на каждый из них:

  1. Одна и та же физическая папка
    • Физическое местоположение класса актера и физическое местоположение "вызывающего класса" не связаны с возможностью отправки сообщений актеру.
  2. Та же папка пространства имен
    • Пространство имен напрямую не влияет на возможность отправки сообщения актеру. На него может влиять только видимость класса сообщений для отправки.
  3. Тот же адрес папка
    • Опять же, папка address не влияет на возможность отправки сообщения актеру.

Чтобы отправить сообщение актеру, вам нужен только это IActorRef, есть несколько способов управления этими ссылками, которые я не собираюсь здесь писать, потому что это зависит от архитектуры вашего приложения.

Я, однако, упомяну, что вы также можете использовать ActorSystem.ActorSelection метод для получения справки об актере, который находится на определенном пути , но это , а не рекомендуется, поскольку он может легко использоваться неправильно и может привести к некоторым вредным привычкам. Его использование следует рассматривать как расширенную функцию.

После того, как вы определились со ссылкой на актера, вы можете вызвать метод Ask из класса, не являющегося актером, если вы ожидаете некоторый результат (будьте осторожны, результат будет обернут в задачу, которой вы должны будете управлять, чтобы получить результат). Если вы не ожидаете ответа (или если вам нет дела до ответа), вы можете просто вызвать метод Tell. Вы должны передать сообщение для отправки актеру обоим этим методам.

Наконец, как только актер получит ваше сообщение, ваше сообщение будет в конечном итоге обработано, а затем актер выполнит что бы это ни было предназначено.

Если вы еще этого не сделали, * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10 ''

...