チャネルの選択
.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