クライアントにデータを提供すると同時にNServiceBusと統合されたWCF Per-Callサービスがあります。
すべてのステートフル オブジェクトは、カスタム サービス ホストに統合された UnityContainer に格納されます。
NServiceBus はサービス ホストで構成され、サービス インスタンスと同じコンテナーを使用します。
すべてのクライアントには、独自のインスタンス コンテキストがあります (Juval Lowy の本で、Durable Services に関する章で説明されています)。
バス経由でリクエストを送信する必要がある場合は、ある種のディスパッチャーを使用し、Thread.Sleep() を使用して応答を待ちます。サービスは呼び出しごとであるため、これは問題ありません。
しかし、バスからのメッセージについて少し混乱しています。そのサービスは、それらを処理してクライアントに提供する必要があります。株価などの一部のデータについては、ある種のステートフル オブジェクトを更新するだけで、クライアントが GetQuotesData() を呼び出したときに、このオブジェクトからデータを提供するだけです。しかし、新しい見積もりが追加されたなど、多数のサービス メッセージがあります。
現時点では、"Postman デーモン" =)) のようなものを実装し、このタイプのメッセージをインスタンス コンテキストに格納するというアイデアがあります。次に、クライアントは「GetMail()」を呼び出し、それらのメッセージを受信して解析します。問題は、NServiceBus メッセージが「インターフェイス ベース」であり、WCF 経由で渡すことができないため、抽象クラスから派生した型に変換する必要があることです。
この状況を処理する最善の方法がわかりません。