クライアントがクライアント UI から WCF サービス ホストへの非同期プロセスを呼び出し、クライアントにプロセスの状態を通知する方法を探しています。これは、saga (プロセス マネージャー)、ドメイン イベント、および WCF 二重接続で実現できると思いますが、その方法はわかりません。
ケースシーケンス(推測)は次のようになります。
- クライアントがプロセスを呼び出す
- クライアントが WCF プロキシを作成する
- プロキシはサービス ホストに接続します
- サービス ホストがクライアントへの二重チャネルを作成する
- サービス ホストは、コマンド バスを使用してプロセスを開始し、二重チャネルを渡します
- プロセス状態変化!
- 関連するデュプレックス チャネルを見つける
- プッシュ バック ステータス変更
- クライアントはステータスの変更を受け取り、視覚化します
私はこれで正しいですか?要するに、関連するクラスはどのように見えるでしょうか? はい、私は NServiceBus を認識しています (そのような場合によく言及されます) が、追加のフレームワークに依存したくありません (NServiceBus が自分で解決できることはすでにたくさんあり、すでに数百を使用しています)あらゆる種類のもののための異なるフレームワークの..)
編集: 例 これは、私の質問を特定する可能性のある実際の例です。
画像を使って魔法やユニコーンのような処理を行う画像処理サーバーがあります。WCF クライアントは画像をサーバーにアップロードし、処理された画像の量を示す進行状況バーを表示します。サーバーは新しい ImageProcessService を (リクエスト スコープで) 開始します。処理中に、プロセスをパーセントで示す数字とともに多数の ImageProcessStateChanged イベントをスローする可能性があります。完了したら、ImDoneEvent をスローする可能性があります。すべてのイベントは、適切なクライアントに信号を返すイベント バスによってキャッチされる必要があります。このプロセスには最大 60 秒かかる場合があり、クライアントごとに 1 回起動できますが、できるだけ多くのクライアントに対して起動できます。