探しているものの正しい用語がよくわからないので、ご容赦ください。私が保守しているアプリケーションには、いくつかの異なるパブリッシャーからアプリケーションにデータを取得するための標準のPubSub実装があります。PubSubネゴシエーションを処理するデータをサブスクライブするための「サービス」があり、さまざまな種類のデータにはさまざまなサービス(製品、注文、ベンダーなど)があります。これらのサービスは通常、プレーンなバニラ.NETイベントを介してメッセージのアプリケーションに通知します。
ただし、アプリケーションのすべての部分がすべてのイベントに関心があるわけではありません。たとえば、一部の場所は商品A、B、Cのみに関心があり、アプリ内の別の場所は商品B、D、Eが必要であり、必要なものは通常、ユーザー入力によって決まります。その結果、アプリ内のすべての場所でハンドラーがサービスのイベントに追加され、そのハンドラーは、ユーザー入力に基づいてフィルターを設定する他のコードに基づいて、不要なイベントをフィルターで除外します。当然のことながら、フィルタリングとフィルターの設定のコードは基本的にどこでも同じです。
これは、一般的なPubSubオブジェクトのセットをサービスとデータが必要な場所の間に配置するのに最適な場所のようです。必要に応じて、データシナリオごとにオブジェクトの具体的なバージョンを設定し、アプリ内のさまざまな場所で使用するサービスにそれらを追加できます。車輪の再発明をしたくないので、PubSubをグーグルで検索してきました。これに最も近いのはトピックですが、製品ごとにトピックを設定する必要があるため、このシナリオには当てはまりません。
これに関して誰かが知っているリソースはありますか?私はC#で作業していますが、必要に応じて他の言語から適応できます。主な要件は、これをWCFなどの個別のサービスまたはプロセスにすることはできないということです。アプリケーションに常駐し、既存のインフラストラクチャを使用する必要があります。おそらく、サービスのイベントにアタッチしてから、その方法でサブスクライバーに通知します。また、このアプリは非常にマルチスレッド化されているため、必要に応じてそれに適応することはできますが、スレッドセーフに傾倒することは役に立ちます。
前もって感謝します!