Demandes unidirectionnelles
Les grains effectuent une exécution de demande asynchrone, ce qui nécessite que toutes les méthodes d’interface de grain retournent un type asynchrone comme Task. En attendant l’achèvement d’une tâche retournée à partir d’un appel de grain, l’appelant est notifié que la demande est terminée, ce qui lui permet de gérer toutes les exceptions ou de recevoir des valeurs de retour. Orleans prend également en charge les demandes unidirectionnelles, ce qui permet aux appelants de signaler un événement à un grain sans attendre d’exceptions ou de signaux d’achèvement.
Les demandes unidirectionnelles retournent immédiatement à l’appelant et ne signalent ni l’échec ni l’achèvement. Une demande unidirectionnelle ne garantit même pas que l’appelé a reçu la demande. Le principal avantage d’une demande unidirectionnelle est qu’elles vous dispensent des coûts de messagerie associés au renvoi d’une réponse à l’appelant et peuvent donc améliorer le niveau de performance dans certains cas spéciaux. Les demandes unidirectionnelles sont une fonctionnalité de performance avancée qui doit être utilisée avec précaution et seulement quand un développeur juge utile d’y recouvrir. Il est recommandé de privilégier les demandes bidirectionnelles régulières qui signalent l’achèvement et propagent les erreurs aux appelants.
Il est possible de rendre une demande unidirectionnelle en marquant la méthode d’interface de grain avec OneWayAttribute, comme ceci :
public interface IOneWayGrain : IGrainWithGuidKey
{
[OneWay]
Task Notify(MyData data);
}
Les demandes unidirectionnelles doivent retourner Task ou ValueTask et ne doivent pas retourner des variantes génériques de ces types (Task<TResult> et ValueTask<TResult>).
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :