Какой метод Actor.Tell предпочтительнее и почему?

Мне интересно, какой метод Tell следует использовать по умолчанию?

Документы на

http://getakka.net/docs/working-with-actors/sending-messages

подсказка, что Tell(message, sender) является предпочтительным способом отправки сообщения, однако, глядя на код Akka.Net, кажется, что Tell(message) все равно вызывает версию с двумя аргументами, при этом поле отправителя заполняется автоматически.

Помимо вызова более простого кода с версией Tell с двумя аргументами (меньше ifs под капотом), есть ли другая причина, по которой ее следует использовать вместо версии с одним аргументом (при вызове изнутри актора)?


person voltcode    schedule 03.02.2016    source источник


Ответы (1)


Я склоняюсь к вызову вещей с наименьшим количеством зависимостей, необходимых для выполнения поставленной задачи.

Во всяком случае, кроме этого. В статье, на которую вы ссылаетесь, на самом деле говорится о том, что лучше сказать, чем спросить‹>. Я не думаю, что цель состоит в том, чтобы указать, какую перегрузку предпочтительнее использовать. Часто вы будете использовать один с отправителем, потому что вы хотите, чтобы ответ перешел к другому актеру.

Вызов Tell(blah, Self) кажется ужасно избыточным, вероятно, поэтому существует перегрузка. Времена, когда вам нужно быть осторожным, — это когда вы говорите из места, где у вас нет ссылки на Self или подходящую Sender EG из тестов.

Другой распространенный сценарий — на уровне службы, здесь (т. е. на поверхности системы) вы часто обнаружите, что Ask‹> подходит, если требуется синхронный ответ. Смысл этой статьи в том, чтобы указать, что реактивные системы часто не хотят быть синхронными (на основе запросов), и поэтому вы должны иметь пути на основе сообщений (например, в веб-контексте, возможно, к Rx-концентратору).

person John Nicholas    schedule 03.02.2016