チャネルの選択
.NET Framework リモート処理インフラストラクチャには、次のチャネル実装が用意されています。
IpcChannel
IpcChannel クラスは、名前付きパイプを使用して、同じコンピュータ上の複数のプロセス アプリケーションに対して高速なプロセス間通信を提供します。IpcChannel は、次の機能を実行します。
名前付きパイプを使用して、送信元と受信先の間で通信します。
バイナリ形式および業界標準の SOAP シリアル化形式へのペイロードのエンコーディングをサポートします。
オブジェクト参照のための ChannelDataStore を生成および利用します。
偽装とデリゲートをサポートします。
名前付きパイプ上でアクセス制御リスト (ACL) をサポートし、高度なアクセス制御を実現します。
アプリケーションが、同じコンピュータ上の異なるプロセスで実行される別のアプリケーションと通信する必要がある場合は、IpcChannel を使用します。IpcChannel は名前付きパイプを使用するので、アプリケーションは一般的に、最高の通信パフォーマンスを実現し、リモート オブジェクトへのアクセスを制御するために偽装とデリゲートを使用できます。この機能は、負荷がかかった状態で良好に動作する必要がある 3 階層アプリケーションの 2 階層と 3 階層の間で特に便利です。
TcpChannel
TcpChannel クラスは、バイナリ フォーマッタを使用して、すべてのメッセージをバイナリ ストリームにシリアル化し、TCP プロトコルを使用してそのストリームをターゲットの URI (Uniform Resource Identifier) に転送します。TcpChannel は、次の機能を実行します。
TCP ソケットを使用して、送信元と受信先の間で通信します。
バイナリ形式および業界標準の SOAP シリアル化形式へのペイロードのエンコーディングをサポートします。
オブジェクト参照のための ChannelDataStore を生成および利用します。
偽装とデリゲートをサポートします。
SSPI 暗号化をサポートします。
TcpChannel は、その時点で別のサーバーに要求を行っているスレッドの数と同じ数の接続を開いてキャッシュします。ソケット接続は、クライアントでアクティブでない状態が 15 ~ 20 秒続くと閉じられます。
.NET Framework リモート処理を使用する多数のアプリケーションを構築する場合は、TcpChannel でリッスンしているサーバー アプリケーション ドメインへの接続に、誤って HttpChannel を使用しないように注意が必要です。誤って接続すると、クライアントは "基になる接続が閉じられました: 受信時に予期しないエラーが発生しました" という例外を受け取ります。クライアントがこの例外を受信したら、クライアントとサーバーに一致しないチャネルがないかどうかをチェックする必要があります。
HttpChannel
HttpChannel クラスは、SOAP プロトコルを使用して、リモート オブジェクトとの間でメッセージを転送します。すべてのメッセージは、SoapFormatter を通じて渡されます。その際、メッセージは XML に変換されてシリアル化され、必要な SOAP ヘッダーがストリームに追加されます。バイナリ フォーマッタも指定した場合、バイナリ データ ストリームが作成されます。このデータ ストリームは、HTTP プロトコルを使用してターゲットの URI に転送されます。HttpChannel は SOAP 1.1 に準拠し、次の機能を実行します。
トランスポートとして HTTP プロトコルを使用して、送信元と受信先の間で通信します。
バイナリ形式だけでなく、XML エンコーディング標準である SOAP へのペイロードのエンコーディングをサポートします。
ASP.NET および TCP ソケットで、HTTP 要求を受信したり、HTTP 応答を送信したりするためのレシーバを設定します。
オブジェクト参照のための ChannelDataStore を生成および利用します。
偽装とデリゲートをサポートします。
SSPI 暗号化をサポートします。
メモ : |
---|
クライアントで HttpChannel を Microsoft Internet Explorer と共に使用する場合、Internet Explorer のプロキシ設定は自動構成に設定できません。代わりに、Internet Explorer のプロキシ設定を明示的に設定する必要があります。 |
HttpChannel がサーバーに対して同時に開くことができる接続は、指定された数だけです。既定値は 2 ですが、アプリケーション構成ファイルで clientConnectionLimit 属性を使用して、既定値を変更できます。
.NET Framework リモート処理を使用する多数のアプリケーションを構築する場合は、TcpChannel でリッスンしているサーバー アプリケーション ドメインへの接続に、誤って HttpChannel を使用しないように注意が必要です。誤って接続すると、クライアントは "基になる接続が閉じられました: 受信時に予期しないエラーが発生しました" という例外を受け取ります。クライアントがこの例外を受信したら、クライアントとサーバーに一致しないチャネルがないかどうかをチェックする必要があります。
関連項目
参照
HttpChannel
TcpChannel
IpcChannel
概念
Copyright © 2007 by Microsoft Corporation.All rights reserved.