84

自分のマシンで実行中のプロセスと通信するには、名前付きパイプまたは .NET Remoting を使用する必要がありますか?

4

8 に答える 8

57

WCFが最良の選択です。さまざまなトランスポートメカニズム名前付きパイプを含む )をサポートし、完全に構成駆動型にすることができます。WCFをご覧になることを強くお勧めします。

これは、 WCFとRemotingのパフォーマンスの比較を行うブログです。

ブログからの引用:

WCFと.NETRemotingのパフォーマンスは実際に同等です。違いは非常に小さいため(クライアントの待ち時間を測定)、どちらが少し速いかは問題ではありません。ただし、WCFのサーバースループットは.NETRemotingよりもはるかに優れています。完全に新しいプロジェクトを開始する場合は、WCFを選択します。とにかく、WCFはリモーティング以上のことを行い、それらすべての機能について私はそれが大好きです。

WCFのMSDNセクション

于 2008-09-17T16:10:37.370 に答える
15

1 台のマシン上にある場合、名前付きパイプを使用するとパフォーマンスが向上し、リモート インフラストラクチャと WCF を使用して実装できます。または、 System.IO.Pipesを直接使用することもできます。

于 2008-09-17T16:08:47.937 に答える
5

プロセス間通信という意味であれば、今のところ問題なく .NET Remoting を使用しています。2 つのプロセスが同じマシン上にある場合、通信は非常に高速です。

名前付きパイプは間違いなくより効率的ですが、少なくとも基本的なアプリケーション プロトコルの設計が必要であり、実現できない可能性があります。リモート処理を使用すると、リモート メソッドを簡単に呼び出すことができます。

于 2008-09-17T16:08:43.600 に答える
3

.NET Framework 2.0 のリモート処理は、同じマシン内のプロセス間通信用のIPC チャネルを提供します。

于 2008-09-17T16:48:51.350 に答える
3

.NET Framework 3.0 以降を使用している場合は、WCF を使用します。WCF を使用すると、パフォーマンス/相互運用性/その他の間のトレードオフに応じて、さまざまなバインドを使用できます。あなたが必要とすること。

パフォーマンスが重要ではなく、他の Web サービス テクノロジとの相互運用が必要な場合は、WS-HTTP バインディングを使用することをお勧めします。あなたの場合、net-tcp バインディングまたは名前付きパイプ バインディングのいずれかで WCF を使用できます。どちらでも動作するはずです。

私の個人的な意見では、WCF アプローチは、コントラクト駆動型サービスを実行し、オブジェクトではなくメッセージに集中できるため、よりクリーンであるということです (ここでは、WCF/.NET リモート処理の既定のプログラミング モデルに基づいて一般化しています)。多くのセマンティック情報が失われたり、明確でなかったりするため、ネットワーク経由でオブジェクトを送信するのは好きではありません。WCF のようにメッセージを送信するだけであれば、通信と、単一ノードを構成するクラス/インフラストラクチャとの間の懸念を簡単に分離できます。

于 2008-09-17T18:52:36.717 に答える
2

WCF は柔軟性も提供します。一部の構成 (バインディング) を変更するだけで、同じマシンの IPC ではなく、他のマシンで同じサービスを利用できます。したがって、コードは柔軟なままです。

于 2010-07-06T10:02:26.420 に答える
1

.Net リモート処理は、それ自体がプロトコルではありません。SOAP、名前付きパイプなど、使用するプロトコルを選択できます。

于 2008-09-17T16:09:00.557 に答える
0

.net リモーティングは、内部プロセス通信を行うために .net に組み込まれています。それを使用すると、将来のバージョンで引き続きサポートされ、おそらく強化されます。名前付きパイプは、.net の将来のバージョンでの機能強化を約束するものではありません

于 2008-09-17T16:07:11.217 に答える