Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Żądania jednokierunkowe

Ziarna wykonują asynchroniczne wykonywanie żądań, wymagając, aby wszystkie metody interfejsu ziarna zwracały typ asynchroniczny, na przykład Task. Oczekiwanie na ukończenie zadania zwróconego z wywołania ziarna powiadamia obiekt wywołujący, że żądanie zostało zakończone, umożliwiając im obsługę wyjątków lub odbieranie wartości zwracanych. Orleans Obsługuje również żądania jednokierunkowe, umożliwiając obiektom wywołującym powiadamianie ziarna o zdarzeniu bez oczekiwania wyjątków lub sygnałów ukończenia.

Żądania jednokierunkowe natychmiast wracają do wywołującego i nie sygnalizują awarii ani ukończenia. Jednokierunkowe żądanie nawet nie gwarantuje, że obiekt wywoływany odebrał żądanie. Główną zaletą jednokierunkowego żądania jest to, że oszczędzają koszty obsługi komunikatów związane z wysyłaniem odpowiedzi z powrotem do obiektu wywołującego i w związku z tym mogą poprawić wydajność w niektórych wyspecjalizowanych przypadkach. Żądania jednokierunkowe to zaawansowana funkcja wydajności i powinna być używana z ostrożnością i tylko wtedy, gdy deweloper ustalił, że jednokierunkowe żądanie jest korzystne. Zaleca się preferować regularne żądania dwukierunkowe, które sygnalizują uzupełnianie i propagują błędy z powrotem do osób wywołujących.

Żądanie można wykonać w jeden sposób, oznaczając metodę interfejsu ziarna za OneWayAttributepomocą metody , w następujący sposób:

public interface IOneWayGrain : IGrainWithGuidKey
{
    [OneWay]
    Task Notify(MyData data);
}

Jednokierunkowe żądania muszą zwracać elementy Task lub ValueTask i nie mogą zwracać ogólnych wariantów tych typów (Task<TResult> i ValueTask<TResult>).