Solicitudes unidireccionales
Los intervalos de agregación realizan la ejecución de solicitudes asincrónicas, para lo que es necesario que todos los métodos de interfaz de intervalo de agregación devuelvan un tipo asincrónico, como Task. A la espera de la finalización de una tarea devuelta desde una llamada de intervalo de agregación notifica al autor de la llamada que la solicitud ha finalizado, lo que les permite controlar las excepciones o recibir valores devueltos. Orleans también admite solicitudes unidireccionales, lo que permite a los autores de la llamada notificar un intervalo de agregación sobre un evento sin esperar excepciones ni señales de finalización.
Las solicitudes unidireccionales vuelven al autor de la llamada inmediatamente y no indican ni errores ni la finalización. Una solicitud unidireccional ni siquiera garantiza que el destinatario haya recibido la solicitud. La principal ventaja de una solicitud unidireccional es que ahorra costos de mensajería asociados al envío de una respuesta al autor de la llamada y, por tanto, puede mejorar el rendimiento en algunos casos especializados. Las solicitudes unidireccionales son una característica de rendimiento avanzada y deben usarse con cuidado y solo cuando un desarrollador haya determinado que son beneficiosas. Se recomienda optar por solicitudes bidireccionales normales, que indican la finalización y devuelven los errores a los autores de la llamada.
Una solicitud se puede realizar de una manera si se marca el método de interfaz de grano con OneWayAttribute, de la siguiente manera:
public interface IOneWayGrain : IGrainWithGuidKey
{
[OneWay]
Task Notify(MyData data);
}
Las solicitudes unidireccionales deben devolver Task o ValueTask y no variantes genéricas de esos tipos (Task<TResult> y ValueTask<TResult>).
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios: