Elegir un canal

Este tema es específico de una tecnología heredada que se mantiene para la compatibilidad con versiones anteriores con aplicaciones existentes y no se recomienda para nuevo desarrollo. Las aplicaciones distribuidas se deberían desarrollar utilizando Windows Communication Foundation (WCF).

La infraestructura remota de .NET Framework proporciona las implementaciones siguientes del canal:

Canal Ipc

La clase IpcChannel utiliza las canalizaciones con nombre para proporcionar la comunicación entre procesos de gran velocidad para varias aplicaciones de proceso en el mismo equipo. Un IpcChannel:

  • Se comunica entre el remitente y el receptor utilizando las canalizaciones con nombre.

  • Permite codificar las cargas útiles en formato binario y el estándar de la industria del formato de serialización SOAP.

  • Genera y consume ChannelDataStore para las referencias de objeto.

  • Admite suplantación y delegación.

  • Admite listas de control de acceso (ACL) en la canalización con nombre para el control de acceso avanzado.

Utiliza un IpcChannel cuando una aplicación debe comunicarse con otra aplicación que se ejecuta en un proceso diferente en el mismo equipo. Dado que IpcChannel utiliza las canalizaciones con nombre, generalmente las aplicaciones pueden obtener el mayor rendimiento de comunicación y utilizar la suplantación y la delegación para controlar el acceso al objeto remoto. Esta funcionalidad es especialmente útil entre el segundo y tercer nivel de una aplicación de tres niveles que debe rendir bien al estar cargada.

Canal Tcp

La clase TcpChannel utiliza un formateador binario para serializar todos los mensajes en una secuencia binaria y transportar la secuencia al Identificador uniforme de recursos de destino (URI) utilizando el protocolo TCP. TcpChannel realiza las funciones siguientes.

  • Comunica entre el remitente y el receptor utilizando los sockets de TCP.

  • Permite codificar las cargas útiles en formato binario y el estándar de la industria del formato de serialización SOAP.

  • Genera y consume ChannelDataStore para las referencias de objeto.

  • Admite suplantación y delegación.

  • Admite el cifrado de SSPI.

TcpChannel se abre y almacena en la memoria caché tantas conexiones como es posible puesto que existen subprocesos haciendo solicitudes a otro servidor en ese momento. Las conexiones de socket se cierran en el cliente después de 15-20 segundos de inactividad.

Si está generando varias aplicaciones que utilizan la comunicación remota de .NET Framework, resulta fácil utilizar equivocadamente HttpChannel para conectarse a un dominio de aplicación de servidor que realiza escuchas con TcpChannel. Si realiza esta conexión, el cliente recibe la excepción siguiente: “Se cerró la conexión subyacente: Se ha producido un error inesperado en un receptor." Si tiene un cliente que recibe esta excepción, debería comprobar si coinciden los canales del cliente y del servidor.

Canal Http

La clase HttpChannel transporta los mensajes a y desde los objetos remotos utilizando el protocolo SOAP. Todos los mensajes se pasan a través de SoapFormatter, donde el mensaje se cambia a XML y se serializa, y se agregan a la secuencia los encabezados SOAP necesarios. Si también se especifica el formateador binario, se crea una flujo de datos binario. A continuación, el flujo de datos se transporta al URI de destino utilizando el protocolo HTTP. HttpChannel es conforme a SOAP 1.1 y realiza las funciones siguientes:

  • Comunica entre el remitente y el receptor utilizando el protocolo HTTP como transporte.

  • Permite codificar las cargas útiles en SOAP, que es una norma estándar de codificación de XML, así como un formato binario.

  • Establece el receptor para recibir las solicitudes HTTP y enviar respuestas HTTP en ASP.NET y en un socket de TCP.

  • Genera y consume ChannelDataStore para las referencias de objeto.

  • Admite suplantación y delegación.

  • Admite el cifrado de SSPI.

4b3scst2.note(es-es,VS.100).gifNota:
Para utilizar HttpChannel en el cliente con Microsoft Internet Explorer, no puede establecer la configuración automática de valores de proxy en Internet Explorer. En su lugar, debe establecer explícitamente los valores de proxy en Internet Explorer.

Un HttpChannel abre al mismo tiempo solo un número especificado de conexiones en un servidor determinado. El valor predeterminado es dos, pero puede utilizar el atributo clientConnectionLimit en un archivo de configuración de la aplicación para cambiar el valor predeterminado.

Si está generando varias aplicaciones que utilizan la comunicación remota de .NET Framework, resulta fácil utilizar equivocadamente HttpChannel para conectarse a un dominio de aplicación de servidor que realiza escuchas con TcpChannel. Si lo hace, el cliente recibe la excepción siguiente: "Se cerró la conexión subyacente: Se ha producido un error inesperado en un receptor." Si tiene un cliente que recibe esta excepción, debería comprobar si coinciden los canales del cliente y del servidor.

Vea también

Referencia

HttpChannel
TcpChannel
IpcChannel

Conceptos

Canales