Elección del transporte

En este tema se analizan los criterios para elegir entre los tres transportes principales que se incluyen en Windows Communication Foundation (WCF): HTTP, TCP y canalizaciones con nombre. WCF también incluye un transporte de cola de mensajes (también conocido como MSMQ), pero este documento no trata la puesta en cola de mensajes.

El modelo de programación WCF separa las operaciones de punto de conexión (tal y como se expresa en un contrato de servicio) desde el mecanismo de transporte que conecta dos puntos de conexión. Esto le proporciona la flexibilidad para decidir cómo exponer sus servicios a la red.

En WCF, se especifica cómo transferir datos a través de una red entre puntos de conexión mediante un enlace, que se compone de una secuencia de elementos de enlace. Un elemento de enlace del transporte, que forma parte del enlace, representa un transporte. Un enlace incluye los elementos de enlace de protocolo opcionales, como seguridad, un elemento de enlace de codificador de mensaje necesario y un elemento de enlace de transporte necesario. Un transporte envía o recibe el formulario serializado de un mensaje a otra aplicación o desde otra aplicación.

Si se debe conectar a un cliente existente o servidor, puede que no tenga elección a la hora de utilizar un transporte determinado. Sin embargo, se puede acceder a los servicios WCF a través de varios puntos de conexión, cada uno con un transporte diferente. Cuando un transporte único no cubre el público previsto para su servicio, considere exponer el servicio sobre varios extremos. De este modo, las aplicaciones cliente pueden utilizar el punto de conexión que más les convenga.

Después de elegir un transporte, debe seleccionar un enlace que lo utilice. Puede elegir un enlace que proporcione el sistema (consulte Enlaces que proporciona el sistema) o bien puede crear su propio enlace personalizado (consulte Enlaces personalizados). Además, puede crear sus propios enlaces. Para obtener más información, consulte Creación de enlaces que define el usuario.

Ventajas de cada transporte

En esta sección se describen las razones principales para elegir cualquiera de los tres transportes principales y se muestra un gráfico de decisión detallado para elegir entre ellos.

Cuándo utilizar el transporte HTTP

HTTP es un protocolo de solicitud/respuesta entre clientes y servidores. La aplicación más común consiste en clientes de explorador web que se comunican con un servidor web. El cliente envía una solicitud a un servidor, que escucha los mensajes de la solicitud de cliente. Cuando el servidor reciba una solicitud, devuelve una respuesta, que contiene el estado de la solicitud. Si es correcto, se devuelven datos opcionales como una página web, un mensaje de error u otra información. Para obtener más información sobre el protocolo HTTP, consulte HTTP: protocolo de transferencia de hipertexto.

El protocolo HTTP no está basado en una conexión. Una vez enviada la respuesta, no se mantiene ningún estado. Para administrar transacciones de varias páginas, la aplicación debe conservar cualquier estado necesario.

En WCF, el enlace de transporte HTTP se optimiza para la interoperabilidad con sistemas no WCF heredados. Si todas las partes que se comunican usan WCF, los enlaces basados en TCP o en canalizaciones con nombre serán más rápidos. Para obtener más información, vea NetTcpBinding y NetNamedPipeBinding.

Cuando utilizar el transporte TCP.

TCP es un servicio de entrega basado en conexión, orientado a secuencias con detección de errores de principio a fin y corrección. Basado en conexión significa que se establece una sesión de comunicación entre hosts antes del intercambio de datos. Un host es un dispositivo en una red TCP/IP identificada por una dirección IP lógica.

TCP proporciona entrega de datos de confianza y facilidad de uso. En concreto, TCP notifica al remitente la entrega del paquete, garantiza que los paquetes se entregan en el mismo orden en el que se envían, retransmite los paquetes perdidos y se asegura de que no se dupliquen los paquetes de datos. Tenga en cuenta que esta entrega confiable se aplica entre dos nodos de TCP o IP y no es lo mismo que WS-ReliableMessaging, que se aplica entre puntos de conexión, sin tener en cuenta cuántos nodos intermedios pueden incluir.

El transporte TCP WCF se optimiza para el escenario donde ambos extremos de la comunicación usan WCF. Este enlace WCF es el más rápido para los escenarios que implican comunicación entre equipos diferentes. Los intercambios de mensajes utilizan BinaryMessageEncodingBindingElement para la transferencia de mensajes optimizada. TCP proporciona comunicación dúplex y, de este modo, se puede utilizar para implementar los contratos dúplex, incluso cuando el cliente está detrás de la traducción de direcciones de red (NAT).

Cuándo utilizar el transporte de la canalización con nombre

Una canalización con nombre es un objeto en el kernel del sistema operativo Windows, como una sección de memoria compartida que pueden utilizar los procesos para la comunicación. Una canalización con nombre tiene un nombre y se puede utilizar para la comunicación unidireccional o dúplex entre los procesos en un solo equipo.

Cuando se necesita comunicación entre diferentes aplicaciones WCF en un solo equipo y quiere evitar cualquier comunicación desde otro equipo, use el transporte de canalizaciones con nombre. Una restricción adicional es que los procesos que se ejecutan desde el Escritorio remoto de Windows pueden estar limitados a la misma sesión de Escritorio remoto de Windows, a no ser que tengan privilegios elevados.

Advertencia

Al utilizar el transporte de canalización con nombre con reserva de direcciones URL con carácter comodín débil en varios sitios hospedados en IIS, puede producirse el siguiente error: Error del servicio de activación 'NetPipeActivator' del protocolo 'net.pipe' al intentar realizar la escucha del sitio '2'. El protocolo se deshabilitará temporalmente para el sitio. Consulte el mensaje de excepción para obtener más información. URL: WeakWildcard:net.pipe:/<nombre de equipo>/ Estado: ConflictingRegistration Excepción: Nombre de proceso: SMSvcHost Id. de proceso: 1076\

Puntos de decisión para elegir un transporte

La tabla siguiente describe los puntos de decisión comunes utilizados para elegir un transporte. Debería considerar los atributos adicionales y transportes que se aplican a su aplicación. Identifique los atributos que son importantes para su aplicación, identifique los transportes que se asocian favorablemente con cada uno de sus atributos y, a continuación, seleccione los transportes que funcionen mejor con su configuración de atributos.

Atributo Descripción Transportes favorables
Diagnóstico Los diagnósticos le permiten detectar automáticamente los problemas de conectividad de transporte. Todos los transportes admiten la capacidad de devolver la información del error que describe la conectividad. Sin embargo, WCF no incluye herramientas de diagnóstico para investigar los problemas de red. None
Hospedaje Todos los puntos de conexión WCF se deben hospedar en una aplicación. IIS 6.0 y versiones anteriores solo admiten el hospedaje de aplicaciones que usan el transporte HTTP. En Windows Vista, la compatibilidad se agrega para hospedar todos los transportes WCF, entre los que se incluyen TCP y canalizaciones con nombre. Para obtener más información, consulte Hospedaje en Internet Information Services y Hospedaje en el servicio de activación de procesos de Windows. HTTP
Inspección La inspección es la capacidad de extraer y procesar la información de los mensajes durante la transmisión. El protocolo HTTP separa el enrutamiento e información de control de los datos, de modo que facilita la creación de herramientas que inspeccionan y analizan los mensajes. Los transportes que son fáciles de inspeccionar también pueden requerir menos potencia de procesamiento en dispositivos de red. El nivel de seguridad utilizado afecta a la posibilidad de inspeccionar los mensajes. HTTP
Latencia La latencia es el período de tiempo mínimo exigido para completar un intercambio de mensajes. Todas las operaciones de red tienen más o menos latencia, según la elección de transporte. El uso de dúplex o comunicación unidireccional con un transporte cuyo patrón de intercambio de mensajes nativo es la respuesta de la solicitud, como HTTP, puede producir la latencia adicional debido a la correlación forzada de mensajes. En esta situación, considere utilizar un transporte cuyo patrón de intercambio de mensajes nativo sea dúplex, como TCP. TCP, con nombre

Pipe
Cobertura El alcance de un transporte refleja cómo es de capaz el transporte al conectar con otros sistemas. El transporte de canalización con nombre tiene un alcance muy pequeño; solo puede conectar a los servicios que se ejecutan en el mismo equipo. Los transportes HTTP y TCP tienen un alcance excelente y pueden penetrar algunas configuraciones de firewall y NAT. Para obtener más información, consulte Trabajar con NAT y firewalls. HTTP, TCP
Seguridad Seguridad es la capacidad de proteger los mensajes durante la transferencia proporcionando confidencialidad, integridad o autenticación. La confidencialidad protege un mensaje para que no pueda ser examinado, la integridad protege un mensaje contra su modificación y la autenticación proporciona garantías sobre el remitente o receptor del mensaje.

WCF admite seguridad de transferencia en el nivel de mensaje y en el nivel de transporte. La seguridad de mensaje se crea con un transporte si el transporte admite un modo de transferencia almacenado en búfer. La compatibilidad de la seguridad de transporte varía, dependiendo del transporte escogido. El HTTP, TCP y transportes de canalización con nombre tienen paridad razonable en su compatibilidad de seguridad de transporte.
Todo
Throughput El rendimiento mide la cantidad de datos que se pueden transmitir y se pueden procesar en un período de tiempo especificado. Como la latencia, el transporte escogido puede afectar al rendimiento de las operaciones de servicio. Maximizar el rendimiento de un transporte requiere minimizar tanto la sobrecarga de transmisión de contenido como el tiempo de espera empleado para que se completen los intercambios de mensajes. Tanto los transportes de canalización con nombre y TCP agregan sobrecarga pequeña al cuerpo del mensaje y admiten una forma dúplex nativa que reduce la espera en las respuestas de los mensaje. TCP, canalización con nombre
Tooling Las herramientas representan soporte de aplicaciones de terceros para un protocolo para el desarrollo, diagnóstico, hospedaje y otras actividades. Desarrollar herramientas y software para trabajar con el protocolo HTTP implica una inversión particularmente grande. HTTP

Consulte también