4

同じマシン (異なるアプリケーション ドメインとプロセスの混合) で実行されている .NET アプリケーションで使用できる pub/sub メカニズムを探しています。別のサービスを実行したり、構成が多すぎるものを実行したりする必要はありません。明らかに、メモリと CPU の負荷も最小限に抑えたいと思います。

具体的には、同じホスト上のサブスクライバーに大量の小さなメッセージをブロードキャストしたいと考えています。したがって、バス (MSMQ や NServiceBus など) が必要ですが、完全なネットワーク サポート (ローカルの名前付きパイプのみが必要) のオーバーヘッドや、エンタープライズ バスのコストと複雑さは必要ありません。

4

5 に答える 5

4

名前付きパイプは、ローカル プロセスの対話を行う最速の方法です。

参照:
NamedPipeServerStream
NamedPipeClientStream
Choosing a transport

重要な読み物:
デッドロックに陥らないでください

于 2011-11-29T12:22:22.673 に答える
1

適切に構成されていれば、MSMQ + NServiceBus は単一のマシンで目的のスループットを達成できると思います。メッセージがディスクに書き込まれないようにする [Express] 属性があります。パフォーマンスが十分であれば、独自のフレームワークを作成するよりも、このような高レベルのフレームワークを使用する方がはるかに優れています。

于 2011-11-29T12:42:52.650 に答える
1

あるプロセスから別のプロセスに、作業の一部が完了したというシグナルを送信したいだけの場合、最も軽量なソリューションはミューテックスです。

于 2011-11-29T12:36:45.213 に答える
0

これは私の決定的な解決策ではありませんが、信頼できる pub/sub モードを提供し、構成とインフラストラクチャの要件が比較的低い0MQという解決策が 1 つ出てきました。欠点は、比較的低レベルであることです (.NET API はネイティブ C コードのラッパーです)。したがって、すべてのシリアル化などを実装する必要があります。

実験して結論に達する時間ができたら、投稿します。

于 2011-11-29T14:56:37.800 に答える
0
Mailslots
Memory Mapped files
Named Pipes
LPC

Windows 上のすべて

于 2011-11-29T12:39:56.880 に答える