この記事の最初のセクションで述べたように(.chm ファイル - 以下の注を参照)
一方向呼び出しは、非同期呼び出しと同じではありません。一方向呼び出しがサービスに到達すると、それらは一度にすべてディスパッチされず、一度に 1 つずつディスパッチされるようにサービス側でキューに入れられる場合があります...キューに入れられたメッセージの数がキューの容量を超えた場合、一方向の呼び出しを発行した場合でも、クライアントはブロックされます。
一方向呼び出しが呼び出された場合、呼び出し元に制御が返されるのはいつですか? 同じ記事の冒頭では、単方向呼び出しがファイア アンド フォーゲット操作に使用され、それによって一種の非同期呼び出しがシミュレートされると述べられています。セッションフル WCF サービスに、セッションを開始する Login() 一方向メソッドがある場合、このメソッドはいつ呼び出し元に制御を返しますか? サービスでメソッドが実際に実行される前に戻りますか? もしそうなら、どうすればメソッドがサービスで実行されたことを確認できますか?
サービスがログイン手順中に発生する可能性のあるエラーをクライアントに返すようにしたい場合、ファイアアンドフォーゲット動作を実現する唯一の方法は非同期呼び出しでしょうか?
注: 上記の引用は、Juval Lowy によるWCF Essentials - What You Need To Know About One-Way Calls, Callbacks, And Eventsという記事からのもので、MSDN マガジンの 2006 年 10 月号に掲載されています。上記のリンクは、MSDN のヘルプ ファイル (.chm) 形式へのリンクです。リンクされた CHM ファイルが機能しない場合 (私はできませんでした)、7zip で開くことができます。