英語で読む

次の方法で共有


一方向の要求

グレインでは非同期要求実行を行い、これにより、すべてのグレイン インターフェイス メソッドは Task などの非同期型を返すように要求されます。 グレイン呼び出しから返されたタスクの完了を待機すると、呼び出し元に要求が終了したことが通知され、呼び出し元は例外を処理したり戻り値を受け取ったりできるようになります。 Orleans では "一方向の要求" もサポートされているため、呼び出し元は例外や完了シグナルを想定することなくグレインにイベントについて通知できます。

一方向の要求はすぐに呼び出し元に戻り、この要求によって失敗や完了が通知されることはありません。 一方向の要求を使用しても、呼び出し元が要求を受け取ったことが保証されるわけでもありません。 一方向の要求の主な利点は、呼び出し元への応答の返信に関連するメッセージング コストを節約し、一部の特殊なケースでパフォーマンスを向上できる点です。 一方向の要求は高度なパフォーマンス機能であり、開発者が一方向の要求が有益であると判断した場合にのみ、慎重に使用する必要があります。 完了をお知らせしてエラーを呼び出し元に伝達するという通常の双方向の要求を優先することをお勧めします。

次のように、OneWayAttribute を使用してグレイン インターフェイス メソッドをマークすることで、要求を一方向にすることができます。

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

一方向の要求では、Task または ValueTask のいずれかを返す必要があり、それらの型 (Task<TResult> および ValueTask<TResult>) のジェネリック バリアントは返す必要はありません。