Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describen 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 enrutamiento de mensajes (también conocido como MSMQ), pero este documento no cubre el enrutamiento de mensajes.
El modelo de programación WCF separa las operaciones de punto de conexión (como se expresa en un contrato de servicio) del mecanismo de transporte que conecta dos puntos de conexión. Esto le ofrece la flexibilidad de decidir cómo exponer los 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 transporte se representa mediante un elemento de enlace de transporte, que forma parte del enlace. Un enlace incluye elementos de enlace de protocolo opcionales, como la seguridad, un elemento de enlace de codificador de mensajes necesario y un elemento de enlace de transporte necesario. Un transporte envía o recibe la forma serializada de un mensaje hacia o desde otra aplicación.
Si debe conectarse a un cliente o servidor existente, es posible que no tenga ninguna opción sobre el uso de un transporte determinado. Sin embargo, los servicios WCF se pueden hacer accesibles a través de varios puntos de conexión, cada uno con un transporte diferente. Cuando un único transporte no cubre la audiencia prevista para su servicio, considere la posibilidad de exponer el servicio a través de varios puntos de conexión. Después, las aplicaciones cliente pueden usar el punto de conexión que es mejor para ellas.
Después de elegir un transporte, debe seleccionar un enlace que lo utilice. Puede elegir un enlace proporcionado por el sistema (consulte System-Provided Enlaces) o puede crear su propio enlace personalizado (consulte Enlaces personalizados). Además, puede crear sus propios enlaces. Para más información, consulte Creación de enlaces definidos por el usuario.
Ventajas de cada transporte
En esta sección se describen las principales razones para elegir cualquiera de los tres transportes principales, incluido un gráfico de decisión detallado para elegir entre ellos.
Cuándo usar el transporte HTTP
HTTP es un protocolo de solicitud y 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 solicitud de cliente. Cuando el servidor recibe una solicitud, devuelve una respuesta, que contiene el estado de la solicitud. Si se ejecuta correctamente, 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, vea HTTP - Protocolo de transferencia de hipertexto.
El protocolo HTTP no está basado en la conexión, una vez que se envía la respuesta, no se mantiene ningún estado. Para gestionar las transacciones de páginas múltiples, la aplicación debe mantener cualquier estado necesario.
En WCF, el enlace de transporte HTTP está optimizado para la interoperabilidad con sistemas heredados que no son WCF. 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.
Cuándo usar el transporte TCP
TCP es un servicio de entrega orientado a flujos basado en conexiones con detección y corrección de errores de un extremo a otro. Basada en la conexión significa que se establece una sesión de comunicación entre hosts antes de intercambiar datos. Un host es cualquier dispositivo de una red TCP/IP identificada por una dirección IP lógica.
TCP proporciona entrega de datos confiable y facilidad de uso. En concreto, TCP notifica al remitente de la entrega de paquetes, garantiza que los paquetes se entregan en el mismo orden en el que se envían, retransmite los paquetes perdidos y garantiza que los paquetes de datos no estén duplicados. Tenga en cuenta que esta entrega confiable se aplica entre dos nodos TCP/IP y no es lo mismo que WS-ReliableMessaging, que se aplica entre los puntos de conexión, independientemente del número de nodos intermedios que puedan incluir.
El transporte TCP de WCF está optimizado para el escenario en el que ambos extremos de la comunicación usan WCF. Este enlace es el enlace WCF más rápido para escenarios que implican la comunicación entre diferentes máquinas. Los intercambios de mensajes utilizan el BinaryMessageEncodingBindingElement para una transferencia de mensajes optimizada. TCP proporciona comunicación dúplex, por lo que se puede usar para implementar contratos dúplex, incluso si 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 los procesos pueden usar 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 Escritorio remoto de Windows pueden estar restringidos a la misma sesión de Escritorio remoto de Windows a menos 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 detalles. 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
En la tabla siguiente se describen los puntos de decisión comunes que se usan para elegir un transporte. Debe tener en cuenta los atributos adicionales y los métodos de transporte que se aplican a su aplicación. Identifique los atributos que son importantes para la aplicación, identifique los transportes que se asocian favorablemente a cada uno de los atributos y, a continuación, seleccione los transportes que funcionan mejor con el conjunto de atributos.
| Atributo | Descripción | Transportes preferidos |
|---|---|---|
| Diagnósticos | Los diagnósticos permiten detectar automáticamente problemas de conectividad de transporte. Todos los transportes admiten la capacidad de enviar de vuelta información sobre fallas que describan la conectividad. Sin embargo, WCF no incluye herramientas de diagnóstico para investigar problemas de red. | Ninguno |
| Alojamiento | Todos los puntos de conexión wcF deben hospedarse dentro de una aplicación. IIS 6.0 y versiones anteriores solo admiten 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, vea 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 información de los mensajes durante la transmisión. El protocolo HTTP separa la información de enrutamiento y control de los datos, lo que facilita la creación de herramientas que inspeccionan y analizan 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 si se pueden inspeccionar los mensajes. | HTTP |
| Latencia | La latencia es la cantidad mínima de tiempo necesaria para completar un intercambio de mensajes. Todas las operaciones de red tienen más o menos latencia en función de la elección del transporte. El uso de comunicación dúplex o unidireccional con un transporte cuyo patrón nativo de intercambio de mensajes es solicitud-respuesta, como HTTP, puede provocar una latencia adicional debido a la correlación forzada de mensajes. En esta situación, considere la posibilidad de usar un transporte cuyo patrón de intercambio de mensajes nativo sea dúplex, como TCP. | TCP, con nombre Pipa |
| Alcance | El alcance de un transporte refleja la capacidad del transporte en la conexión 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 TCP y HTTP tienen un excelente alcance y pueden penetrar algunas configuraciones de NAT y firewall. Para obtener más información, consulte Trabajar con nats y firewalls. | HTTP, TCP |
| Seguridad | La seguridad es la capacidad de proteger los mensajes durante la transferencia proporcionando confidencialidad, integridad o autenticación. La confidencialidad protege un mensaje de ser examinado, la integridad protege un mensaje de modificación y la autenticación proporciona garantías sobre el remitente o el receptor del mensaje. WCF admite la seguridad de transferencia tanto en el nivel de mensaje como 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 con la seguridad de transporte varía en función del transporte elegido. El HTTP, TCP y transportes de canalización con nombre tienen paridad razonable en su compatibilidad de seguridad de transporte. |
Todos |
| Capacidad de procesamiento | El rendimiento mide la cantidad de datos que se pueden transmitir y procesar en un período de tiempo especificado. Al igual que la latencia, el transporte elegido puede afectar al rendimiento de las operaciones de servicio. Maximizar el rendimiento de un transporte requiere minimizar tanto la sobrecarga de transmitir contenido como minimizar el tiempo invertido en esperar a 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 |
| Fabricación de herramientas | Las herramientas representan soporte de aplicaciones de terceros para un protocolo para el desarrollo, diagnóstico, hospedaje y otras actividades. El desarrollo de herramientas y software para trabajar con el protocolo HTTP significa una inversión particularmente grande. | HTTP |