2016-02-03 1 views
1

Je me demande quelle méthode Tell devrait être utilisée par défaut?Quelle est la méthode actor.Tell préférable et pourquoi?

Les docs à

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

allusion au fait que Tell (message, l'expéditeur) est le meilleur moyen d'envoyer un message, mais la recherche à un code Akka.Net, il semble que TELL (message) appelle la version à deux arguments de toute façon avec le champ de l'expéditeur rempli automatiquement.

En plus d'appeler un code plus simple avec une version à deux arguments de Tell (moins ifs sous le capot), y a-t-il une autre raison pour utiliser une version à un seul argument?

Répondre

1

Je m'applique à appeler les choses avec le moins de dépendances nécessaires pour accomplir la tâche à accomplir.

En tout cas, en dehors de cela. L'article dont vous parlez est en train de dire la faveur Tell over Ask <>. Je ne pense pas que l'intention soit de spécifier quelle surcharge est préférable à utiliser. Souvent, vous utiliserez celui avec Sender parce que vous voulez une réponse à un autre acteur.

Appeler Tell(blah, Self) semble terriblement redondant, ce qui explique probablement pourquoi la surcharge existe. Les moments où vous devez faire attention sont quand vous dites à partir d'un endroit où vous n'avez pas la référence à Self ou un EG Expéditeur approprié à partir des tests.

Un autre scénario courant est celui d'une couche de service, ici (c'est-à-dire la surface du système) que vous trouverez souvent. Demander <> est approprié si une réponse est requise de manière synchrone. Le but de cet article est de souligner que les systèmes réactifs ne veulent souvent pas être synchrones (basés sur les requêtes) et que vous devriez donc avoir des chemins basés sur des bases (par exemple dans un contexte web vers un concentrateur Rx)