2 つの異なるレイヤーを混合しています。NamedPipes で WCF を実行することもできます。名前付きパイプ (多くのセットアップ ワードで機能しますが) は、2 台のコンピューター上の 2 つのプロセス間で通信するようには設計されていません。
トランスポートの選択に関するこの MSDN ページを参照して、いつどのトランスポートを使用するかを理解してください。
各交通機関の利点
このセクションでは、3 つの主要なトランスポートのいずれかを選択する主な理由について説明し、それらの中から選択するための詳細な意思決定表を示します。
HTTP トランスポートを使用する場合
HTTP は、クライアントとサーバー間の要求/応答プロトコルです。最も一般的なアプリケーションは、Web サーバーと通信する Web ブラウザー クライアントで構成されます。クライアントは、クライアントの要求メッセージをリッスンするサーバーに要求を送信します。サーバーがリクエストを受信すると、リクエストのステータスを含むレスポンスを返します。成功した場合は、Web ページ、エラー メッセージ、その他の情報などのオプション データが返されます。HTTP プロトコルの詳細については、HTTP - ハイパーテキスト転送プロトコルを参照してください。
HTTP プロトコルは接続ベースではありません。応答が送信されると、状態は維持されません。複数ページのトランザクションを処理するには、アプリケーションは必要な状態を維持する必要があります。
WCF では、HTTP トランスポート バインディングは、従来の非 WCF システムとの相互運用性のために最適化されています。すべての通信パーティが WCF を使用している場合、TCP ベースまたは名前付きパイプ ベースのバインディングの方が高速です。詳細については、NetTcpBinding および NetNamedPipeBinding を参照してください。
TCP トランスポートを使用する場合
TCP は、エンド ツー エンドのエラー検出と修正を備えた接続ベースのストリーム指向配信サービスです。接続ベースとは、データを交換する前にホスト間の通信セッションが確立されることを意味します。ホストは、論理 IP アドレスによって識別される TCP/IP ネットワーク上の任意のデバイスです。
TCP は、信頼性の高いデータ配信と使いやすさを提供します。具体的には、TCP は送信者にパケット配信を通知し、パケットが送信されたのと同じ順序で配信されることを保証し、失われたパケットを再送信し、データ パケットが重複しないことを保証します。この信頼性の高い配信は、2 つの TCP/IP ノード間で適用され、エンドポイント間に適用される WS-ReliableMessaging とは同じではないことに注意してください。エンドポイントに含まれる中間ノードの数に関係ありません。
WCF TCP トランスポートは、通信の両端で WCF を使用しているシナリオ向けに最適化されています。このバインディングは、異なるマシン間の通信を伴うシナリオでは最速の WCF バインディングです。メッセージ交換は、最適化されたメッセージ転送のために BinaryMessageEncodingBindingElement を使用します。TCP は二重通信を提供するため、クライアントがネットワーク アドレス変換 (NAT) の背後にある場合でも、二重コントラクトの実装に使用できます。
名前付きパイプ トランスポートを使用する場合
名前付きパイプは、プロセスが通信に使用できる共有メモリのセクションなど、Windows オペレーティング システム カーネル内のオブジェクトです。名前付きパイプには名前があり、単一のマシン上のプロセス間の一方向または双方向の通信に使用できます。
1 台のコンピューター上の異なる WCF アプリケーション間で通信が必要な場合に、別のコンピューターからの通信を禁止するには、名前付きパイプ トランスポートを使用します。追加の制限として、Windows リモート デスクトップから実行されているプロセスは、昇格された特権を持っていない限り、同じ Windows リモート デスクトップ セッションに制限される場合があります。