.NETプロセス間通信の最良の選択は何ですか?[閉まっている]


82

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


1
うわー私は基本的にexatly同じ質問...尋ね stackoverflow.com/questions/84860/...
クリス・エリクソン

回答:


58

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

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

ブログからの引用:

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

WCFのMSDNセクション


1
リモーティングを支持するさらなる証拠。Microsoft Remoting / WCFチームの誰かから:「Remotingへの開発投資はごくわずかです。WCFはRemotingの後継です。」ここからstackoverflow.com/questions/1294494/...
MarkJ


5

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

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


3
名前付きパイプ上のWCFでもこれが可能です。また、両方のプロセスで同じ契約アセンブリを使用できます。
ケントブオゴール2008

3

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


3

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

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

私の個人的な見解は、WCFアプローチは、コントラクトドリブンサービスを実行し、オブジェクトではなくメッセージに焦点を合わせることができるため、よりクリーンであるということです(ここでは、WCF / .NET Remotingのデフォルトのプログラミングモデルに基づいて一般化しています)。多くのセマンティック情報が失われたり、明確でないため、ネットワークを介してオブジェクトを送信するのは好きではありません。WCFの場合のようにメッセージを送信するだけの場合は、通信と、単一ノードで構成されるクラス/インフラストラクチャとの間で懸念事項を分離することが容易になります。


2

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



1

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


0

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


2
それらがリモーティングを強化する可能性は低いです。リモーティング/ WCFチームの誰かから:「リモーティングへの開発投資はごくわずかです。WCFはリモーティングの後継です。」ここからstackoverflow.com/questions/1294494/...
MarkJ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.