1

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

プロセス 1 は、"Uri1" などの URI にメッセージを発行します。

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());

すべてのプロセスは同じコンピューター上で実行されます。いくつかの調査の後、MSMQ が (キュー名を URI として使用する) 方法であると確信していますが、実装の問題は残っています。私はいくつかの可能性に出くわしました:

MSMQ を直接使用
する このアプローチの問題点は、作成、作成、削除などのキューを自分で管理する必要があることです...また、私が読んだことから、経験がないため、MSMQ の多くの落とし穴と制限に遭遇する可能性があります。それと

NServiceBusMassTransitまたはRhinoServiceBusを使用する (すべて MSMQ を使用する) それらはすべて有能に見えますが、特に NServiceBus のように見えますが、それらのいずれかから基本的な pubsub 機能を抽出する方法をドキュメントから理解できないようです。上記と同様のインターフェース

WCF の使用(MSMQ 経由) 繰り返しますが、これは良いオプションのように見えますが、私は WCF の専門家とはかけ離れているため、詳しく調べる前に、これが正しい方法であることを確認したいと思います。

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

ありがとう!

4

2 に答える 2

3

最終的に、既製の共有メモリ ソリューションを選択しました: http://pubsub.codeplex.com/

于 2010-02-16T22:23:16.043 に答える
0

http://answers.yahoo.com/question/index?qid=20080616091430AAAxTJBによると、NICをインストールしなくてもループバックアドレスを使用できます。たぶん、その機能を使用して、既存のコードを引き続き使用できますか?

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

于 2010-02-09T20:07:29.317 に答える