質問

コンピューターにネットワーク カードがインストールされておらず、次のような機能が必要だとします。

プロセス 1 は、メッセージをいくつかの URI、たとえば「Uri1」にパブリッシュします。

var publisher = new Publisher("Uri1");
publisher.publish(new Message("Somedata");

プロセス 2 は、「Uri1」でメッセージをリッスンし、「Uri2」にメッセージをパブリッシュします。

var subscriber = new Subscriber("Uri1")
subscriber.MessageReceived += data => Console.Writeline(data.ToString());
var publisher = new Publisher("Uri2")
publisher.Publish(new Message("SomeMoreData"))

プロセス 3 は両方の URI からのメッセージをリッスンします。

var subscriber = new Subscriber("Uri1")
subscriber.MessageReceived += data => Console.Writeline(data.ToString());
var anotherSubscriber = new Subscriber("Uri2")
anotherSubscriber.MessageReceived += data => Console.Writeline(data.ToString());

すべてのプロセスは同じコンピューター上で実行されます。いくつか調査した結果、(キュー名を URI として使用する) MSMQ が最適な方法であると考えていますが、実装の問題は残ります。いくつかの可能性が見つかりました。

MSMQ を直接使用する
このアプローチで私が抱えている問題は、キューを自分で管理しなければならないことです。作成、人口、消去...また、読んだところによると、MSMQ の経験が浅いため、MSMQ の多くの落とし穴や制限に遭遇する可能性があります。

使用する Nサービスバス, 大量輸送 または Rhinoサービスバス (すべてMSMQを使用します)それらはすべて、特に NServiceBus が有能に見えますが、ドキュメントからは、それらのいずれかから基本的な pubsub 機能を抽出して、上記のようなインターフェイスにカプセル化する方法がわかりません。

使用する WCF(MSMQ経由)繰り返しますが、これは良い選択肢のように見えますが、私は WCF の専門家からは程遠いので、詳しく調べる前に、これが進むべき道であることを確認したいと思います。

これまでの私たちのアプローチは、十分に機能する PGM マルチキャストに依存していましたが、ネットワーク カードなしで動作するという新しい要件により、少なくとも私の知る限り、オフラインでの作業には別のメカニズムを使用する必要があります。

ありがとう!

役に立ちましたか?

解決

最終的に、共有メモリの既成ソリューションを選択しました。http://pubsub.codeplex.com/初期テストでは、このケースではうまく機能することがわかりました

他のヒント

まあ、によれば、 http://answers.yahoo.com/question/index?qid=20080616091430AAAxTJB NIC がインストールされていなくても、ループバック アドレスを使用できます。おそらくその機能を使用して、既存のコードを引き続き使用できるでしょうか?

注記:私はこれをテストしていません、それは単なるアイデアでした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top