マシン上で実行中のプロセスと通信するために、名前付きパイプまたは.NET Remotingを使用する必要がありますか?.NETのプロセス間通信に最適な選択肢は何ですか?
答えて
WCFが最適です。これは、a number of different transport mechanisms(includingNamedPipes)をサポートし、完全に構成駆動することができます。 WCFを見てみることを強くお勧めします。
ここにはWCF vs Remoting performance comparisonを行うブログがあります。
ブログからの引用:
WCFおよび.NET Remotingがパフォーマンスに本当に匹敵します。その差は非常に小さく(クライアントの待ち時間を測定する)、どちらが少し速いかは関係ありません。 WCFは.NET Remotingよりもはるかに優れたサーバースループットを備えています。私が完全に新しいプロジェクトを開始するなら、私はWCFを選ぶだろう。とにかくWCFはRemotingよりもはるかに機能しています。 .NET Framework 2.0の
リモーティングに有利な証拠。 Microsoft Remoting/WCFチームの誰かから:「Remotingへの開発投資は非常に少なく、WCFはRemotingの後継です」ここからhttp://stackoverflow.com/questions/1294494/is-net-remoting-really-deprecated – MarkJ
.net内部プロセス通信を行うために.net remotingが組み込まれています。それを使用すると、将来のバージョンでサポートを継続し、可能性がある場合があります。名前付きパイプでは、将来のバージョンの.NETでの拡張の約束が得られません。
リモーティングを強化する可能性は低いです。 Remoting/WCFチームの誰かから:「Remotingへの開発投資は非常に少なく、WCFはRemotingの後継です」ここからhttp://stackoverflow.com/questions/1294494/is-net-remoting-really-deprecated – MarkJ
プロセス間通信を意味する場合は、これまで.NET Remotingを使用していましたが問題はありません。 2つのプロセスが同じマシン上にある場合、通信は非常に高速です。
名前付きパイプの方がはるかに効率的ですが、少なくとも基本的なアプリケーションプロトコルの設計が必要です。これは実現できない可能性があります。 Remotingを使用すると、リモートメソッドを簡単に呼び出すことができます。
名前付きパイプ上のWCFもこれを許可します。また、両方のプロセスで同じコントラクトアセンブリを使用することもできます。 –
単一のマシン上にある場合、Named Pipesはパフォーマンスが向上し、remoting infrastructureとWCFで実装できます。または、System.IO.Pipesを直接使用することもできます。
.Netリモート処理は、それ自体のプロトコルではありません。 SOAP、名前付きパイプなど、使用するプロトコールを選択できます。
リモーティングは、同じマシン内のプロセス間通信のためのIPCチャネルを提供します。
.NET Framework 3.0以上を使用している場合は、WCFを使用します。 WCFを使用すると、パフォーマンス/相互運用性などのトレードオフに依存するさまざまなバインディングを使用できます。あなたが必要とするもの。
パフォーマンスが重要ではなく、他のWebサービステクノロジとの相互運用が必要な場合は、WS-HTTPバインディングを使用することをお勧めします。あなたのケースでは、WCFをnet-tcpバインディングまたは名前付きパイプバインディングで使用できます。どちらもうまくいくはずです。
個人的には、コントラクトドリブンサービスを行い、オブジェクトではなくメッセージに焦点を当てるので、WCFのアプローチはよりクリーンです(私はここでWCF/.NET Remotingのデフォルトプログラミングモデルに基づいて一般化しています) )。多くの意味情報が失われるか、または明確でないため、ワイヤを渡ってオブジェクトを送信するのは嫌いです。 WCFのようにメッセージを送信するだけでは、通信と、単一ノードが構成するクラス/インフラストラクチャとの間の懸念を分離することが容易になります。
WCFは柔軟性も提供します。いくつかのconfig(バインディング)を変更するだけで、同じマシン上のIPCの代わりに、同じサービスを他のマシン上に持つことができます。したがって、コードは柔軟性があります。
.NET用のIPC APIのリスト:http://weblogs.asp.net/ricardoperes/local-machine-interprocess -communication-with-net –
- 1. メトロスタイルのハイブリッドアプリケーション - C#+ WebViewsとJavaScript + WinRT C++ - 最適な選択肢は何ですか?
- 2. Win32でマシン内プロセス通信に最適なIPC方法は何ですか?
- 3. iPhoneナビゲーションベースのアプリケーションに最適なストレージの選択肢は?
- 4. タイムマネージメントソリューションの選択肢は何ですか?
- 5. タイミングの選択肢は何ですか?
- 6. ラジオボタンの選択肢は何ですか?
- 7. カスタムログファイルを分析するのに最適な選択肢
- 8. クラス間の双方向通信に最適なパターンは何ですか?
- 9. 適切なjQueryのセレクタの選択肢
- 10. プロセス間通信
- 11. .NETでの複数継承の良い選択肢は何ですか?
- 12. プロセス間の通信
- 13. Luaでのプロセス間通信
- 14. C++でのプロセス間通信
- 15. Qt4での簡単なプロセス間通信
- 16. Windows CEでクロスプロセスの通信に最適なメカニズムは何ですか?
- 17. javaプロセス間通信
- 18. Javaプロセス間通信
- 19. 選択肢から選択肢を選択し、表のセルに選択肢の情報を表示
- 20. ios safariでのファイルアップロードの選択肢は何ですか?
- 21. WindowsでのiOSアプリケーション開発の選択肢は何ですか?
- 22. 可視化ダイアグラムでZestの選択肢は何ですか?
- 23. Djangoでopeninviterの良い選択肢は何ですか
- 24. log4netロギングの他の選択肢は何ですか?
- 25. Jax-RSはウェブサービスとの通信に最適なソリューションですか?
- 26. Linuxのプロセス間通信
- 27. F#のプロセス間通信
- 28. UISplitViewController - ビューコントローラ間の通信に最適なデザインパターン
- 29. c#クラス間の通信に最適な方法
- 30. ディレクティブインスタンス間の通信に最適な方法
うわー、私は基本的には、基本的に同じ質問を本質的にはっきりと聞いてきました... http://stackoverflow.com/questions/84860/how-to-communicate-with-a-windows-service-from-an-application-that -interacts-wi –