現在、私は Windows でマルチプロセス デスクトップ アプリケーションに取り組んでいます。このアプリケーションは、世界中のクライアント マシンに展開されるシュリンク ラップされたアプリケーションになります。.Net 4.0 CF を搭載した Windows XP SP3 など、マシンの幅広い仕様を設定できますが、それらを制御することはできません。また、マシンの構成を具体的に指定することはできません。たとえば、マシンに cuda 1.4 対応のグラフィック プロセッサが必要であるとは指定できません。等
これらのプロセスには、管理されているもの (.Net 4.0) と管理されていないもの (C++ Win32) があります。プロセスはデータを共有する必要があります。これまでに評価したオプションは次のとおりです。
- TCP ソケット
- 名前付きパイプ
パイプの方が少しパフォーマンスが良いように見えますが、私たちのニーズでは、どちらのパフォーマンスも許容範囲内です。また、ソケットは、将来、マシン (およびオペレーティング システム - 最終的には Microsoft 以外の OS をサポートしたいと考えています) の境界を越える柔軟性を提供するため、ソケットを使用することを好みます。
ただし、私の主な懸念は次のとおりです。Tcp ソケットを使用する場合、ファイアウォールで問題が発生する可能性はありますか? IPC に TCP を使用するデスクトップ アプリケーション/プログラムを展開し、問題を経験した人はいますか? もしそうなら - どんな種類の?
これはかなりオープンエンドの質問であることは承知しており、喜んで言い換えます。しかし、どのような潜在的な問題に遭遇する可能性があるかを知りたいです。
編集:もう少し光を当てるために - 少数の POD、int、float、および string のみを転送しています。リクエスト/レスポンスとサブスクリプションという 2 つのパラダイムを提供する抽象化のレイヤーを構築しました。トランスポート層は抽象化されており、現在、パイプ ベースと TCP ベースの 2 つの実装があります。