Číst v angličtině

Sdílet prostřednictvím


Jednosměrné žádosti

Zrna provádějí asynchronní provádění požadavků, které vyžadují, aby všechny metody rozhraní agregace vrátily asynchronní typ, například Task. Čekání na dokončení úkolu vráceného z odstupňovaného volání upozorní volajícího, že žádost byla dokončena, což jim umožní zpracovat všechny výjimky nebo přijímat návratové hodnoty. Orleans podporuje také jednosměrné požadavky, které volajícím umožňují upozorňovat na událost bez očekávání výjimek nebo signálů dokončení.

Jednosměrné žádosti se okamžitě vrátí volajícímu a nepřipojuje se k selhání ani dokončení. Jednosměrná žádost ani nezaručuje, že volaná žádost přijala. Hlavní výhodou jednosměrné žádosti je, že šetří náklady na zasílání zpráv spojené s odesíláním odpovědi zpět volajícímu, a proto můžou zlepšit výkon v některých specializovaných případech. Jednosměrné požadavky jsou pokročilou funkcí výkonu a měly by se používat s opatrností a pouze v případě, že vývojář zjistil, že jednosměrná žádost je výhodná. Doporučuje se preferovat pravidelné obousměrné požadavky, které signalizují dokončení a šíření chyb zpět volajícím.

Požadavek lze provést jedním způsobem tak, že označíte metodu rozhraní zrnitého rozhraní následujícím OneWayAttributezpůsobem:

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

Jednosměrné požadavky musí vracet buď Task nebo ValueTask nesmí vracet obecné varianty těchto typů (Task<TResult> a ValueTask<TResult>).