Compartir a través de


Elección de un codificador de mensajes

En este tema se analizan los criterios para elegir entre los codificadores de mensajes que se incluyen en Windows Communication Foundation (WCF): binario, de texto y mecanismo de optimización de transmisión de mensajes (MTOM).

En WCF, especifica cómo transferir los datos a través de una red entre los extremos utilizando un enlace, que se compone de una secuencia de elementos de enlace. Un codificador de mensajes se representa mediante un elemento de enlace de codificación de mensajes en la pila de enlaces. Un enlace incluye elementos de enlace protocolares opcionales, como un elemento de enlace de seguridad o un elemento de enlace de mensajería de confianza, un elemento de enlace de la codificación de mensajes necesario y un elemento de enlace de transporte necesario.

El elemento de enlace de codificación de mensajes se sienta bajo los elementos de enlace protocolares opcionales y sobre el elemento de enlace de transporte necesario. En el lado de salida, un codificador de mensajes serializa los Message de salida y los pasa al transporte. En el lado de entrada, un codificador de mensajes recibe la forma serializada de un Message desde el transporte y lo pasa a la capa de protocolo más alta, si estuviese presente, o a la aplicación, si no lo estuviese.

Al conectar a un cliente o servidor preexistente, puede que no tenga una opción sobre el uso de una codificación de mensajes determinada, puesto que necesita codificar sus mensajes de la manera que el otro lado espera. Sin embargo, si está escribiendo un servicio de WCF, puede exponer su servicio a través de varios extremos, donde cada uno utilizan una codificación de mensajes diferente. Esto permite a los clientes elegir la mejor codificación para hablar con su servicio sobre el extremo que es mejor para ellos, así como dar la flexibilidad a sus clientes para que elijan la codificación que más les convenga. La utilización de múltiples extremos también le permite combinar las ventajas de diferentes codificaciones de mensaje con otros elementos de enlace.

Codificadores proporcionados por el sistema

WCF incluye tres codificadores de mensajes, que representan las tres clases siguientes:

  • TextMessageEncodingBindingElement, el codificador del mensaje de texto, admite codificación simple XML y codificación SOAP. El modo de codificación XML simple del codificador de mensajes de texto se denomina “XML sin formato” (POX) para distinguirlo de la codificación SOAP basada en texto. Para habilitar POX, establezca la propiedad MessageVersion en None. Utilice el codificador de mensajes de texto para interoperar con extremos que no sean de WCF.

  • BinaryMessageEncodingBindingElement, el codificador de mensajes binarios, utiliza un formato binario compacto y se optimiza para WCF para la comunicación con WCF y, por lo tanto, no es interoperable. Esto también es el codificador de mayor rendimiento de todos los codificadores que proporciona WCF.

  • MTOMMessageEncodingBindingElement, el elemento de enlace, especifica la codificación de caracteres y el control de versiones de los mensajes para los mensajes que utilizan la codificación MTOM. MTOM es una tecnología eficaz para la transmisión de datos binarios en mensajes de WCF. El codificador MTOM intenta crear un equilibrio entre la eficacia y la interoperabilidad. La codificación MTOM transmite la mayoría del XML en forma de texto, pero optimiza grandes bloques de datos binarios transmitiéndolos tal cual, sin convertirlos a texto. En lo que a eficacia se refiere, entre los codificadores que proporciona WCF, MTOM es de texto intermedio (el más lento) y binario (el más rápido).

Cómo elegir un codificador de mensajes

La siguiente tabla describe los factores comunes utilizados para elegir un codificador de mensajes. Clasifique por orden de prioridad los factores que son importantes para su aplicación y, a continuación, elija los codificadores de mensajes que funcionan mejor con estos factores. Asegúrese de considerar factores adicionales no enumerados en esta tabla y cualquier codificador de mensajes personalizado que se puedan requerir en su aplicación.

Factor Descripción Codificadores que admiten este factor

Juegos de caracteres compatibles

Las clases TextMessageEncodingBindingElement y MtomMessageEncodingBindingElement admiten solo las codificaciones Unicode UTF8 y UTF16 (big-endian y little-endian). Si se requieren otras codificaciones, como UTF7 o ASCII, se debe usar un codificador personalizado. Para obtener un codificador personalizado de muestra, vea Codificador de mensaje personalizado.

Texto

Inspección

La inspección es la capacidad para examinar mensajes durante la transmisión. Las codificaciones de texto, con o sin el uso de SOAP, permiten a muchas aplicaciones inspeccionar y analizar mensajes sin el uso de herramientas especializadas. Tenga en cuenta que el uso de seguridad de transferencia en el nivel de mensaje o transporte, afecta a su capacidad para inspeccionar los mensajes. La confidencialidad evita que se examine un mensaje y la integridad evita que se modifique un mensaje.

Texto

Fiabilidad

La fiabilidad es la capacidad de recuperación de que dispone un codificador ante los errores de transmisión. La fiabilidad también se proporciona en el nivel de mensaje, transporte o aplicación. Todos los codificadores de WCF estándar suponen que otra capa proporciona la fiabilidad. El codificador tiene poca capacidad de recuperación ante los errores de transmisión.

Ninguno

Simplicidad

La simplicidad representa la facilidad con la que puede crear codificadores y decodificadores para una especificación de codificación. Las codificaciones de texto son particularmente ventajosas para proporcionar simplicidad y la codificación de texto de POX tiene la ventaja adicional de que no requiere compatibilidad para procesar SOAP.

Texto (POX)

Tamaño

La codificación determina la cantidad de sobrecarga impuesta sobre el contenido. El tamaño de los mensajes codificados está directamente relacionado con el rendimiento máximo de las operaciones del servicio. Las codificaciones binarias generalmente son más compactas que las codificaciones de texto. Cuando el tamaño del mensaje es muy importante, considere también la posibilidad de comprimir el contenido del mensaje durante la codificación. Sin embargo, la compresión agrega costes de procesamiento para el remitente y receptor del mensaje.

Binario

Transmisión por secuencias

La transmisión por secuencias permite a las aplicaciones comenzar a procesar un mensaje antes de que haya llegado el mensaje completo. El uso eficaz de la transmisión por secuencias requiere que los datos importantes de un mensaje estén disponibles al principio del mensaje para que la aplicación receptora no tenga que esperar a que llegue. Es más, las aplicaciones que utilizan la transferencia por secuencias deben organizar incrementalmente los datos en el mensaje para que el contenido no tenga dependencias hacia delante. En muchos casos, debe establecer un compromiso entre el contenido de transmisión por secuencias y tener el tamaño de transferencia más pequeño posible para ese contenido.

None

Compatibilidad con herramientas de terceros

Entre las áreas de compatibilidad de una codificación se incluyen el desarrollo y el diagnóstico. Los desarrolladores de terceros han realizado una gran inversión en bibliotecas y kits de herramientas para administrar mensajes codificados en formato POX.

Texto (POX)

Interoperabilidad

Este factor hace referencia a la capacidad de un codificador de WCF para interoperar con servicios que no son de WCF.

Texto

MTOM (parcial)

Vea también

Otros recursos

Enlaces de Windows Communication Foundation