Share via


Serialización de mensajes

Actualización: noviembre 2007

La serialización es el proceso que consiste en convertir la información del estado de un objeto en un formato que se pueda almacenar o transportar. El concepto básico de la serialización es que un objeto escribe su estado actual, que normalmente está indicado por el valor de sus variables miembro, en un almacenamiento persistente. Posteriormente, el objeto puede volver a crearse mediante la lectura (deshacer la serialización) del estado del objeto a partir del almacenamiento. La serialización controla todos los detalles de los punteros y referencias circulares a objetos que se utilizan cuando se serializa un objeto.

En la función de colas de mensajes, la serialización hace referencia concreta al proceso de convertir un objeto o un conjunto de datos en un mensaje que puede enviarse a una cola, y convertir después los mensajes recuperados de la cola en objetos o datos que pueda procesar la aplicación.

Un objeto formateador controla la serialización de mensajes en las aplicaciones de Visual Studio o .NET Framework. Cuando se envía un mensaje a la cola, el formateador serializa un objeto en una secuencia que se puede enviar a la cola de mensajes. Al leer en una cola, el formateador deserializa los datos del mensaje en la propiedad Body.

Elija el tipo de formateador adecuado para el tipo de datos que desea enviar y recibir. Visual Studio y .NET Framework incluyen tres formateadores predefinidos, diseñados para conservar y no conservar un tipo de datos distinto:

  • El objeto XmlMessageFormatter almacena objetos y tipos de datos primitivos en mensajes por medio de cadenas XML legibles para el usuario. Esta es la configuración de formateador predeterminada para los componentes MessageQueue.

  • El objeto BinaryMessageFormatter conserva uno o más objetos conectados en secuencias serializadas. El resultado es muy compacto y rápido de analizar, pero no es legible para el usuario.

  • El objeto ActiveXMessageFormatter conserva tipos de datos primitivos, lo que permite la interoperabilidad con componentes que utilicen versiones anteriores de Message Queue Server. La serialización resultante es muy compacta. Este formateador se diseñó pensando en Windows y no produce resultados legibles para el usuario. Sin embargo, es un método de serialización sumamente rápido.

De forma predeterminada, se crea XmlMessageFormatter automáticamente al crear una instancia del componente MessageQueue y se asocia a la instancia. Cuando se llama al método Send en la instancia de MessageQueue, el texto del mensaje se serializa con este formateador. No es necesario escribir ningún código adicional para utilizar el formateador durante una operación de envío.

La lectura de un mensaje es algo más compleja. Para leer en la cola mediante un formateador, se deben establecer propiedades que indiquen cómo debe controlarse el texto del mensaje. Si está utilizando el objeto XmlMessageFormatter, establezca la propiedad TargetTypes o TargetTypeNames. Si utiliza el objeto BinaryMessageFormatter, deberá establecer una serie de propiedades diferente. El objeto ActiveXMessageFormatter no tiene propiedades asociadas. Para obtener más información, vea Leer y recibir mensajes.

Además de utilizar los formateadores que se incluyen con Visual Studio y .NET Framework, puede crear formateadores propios si necesita trabajar con tipos de datos diferentes. Puede importar el formateador a un proyecto para tener acceso a él a través del código.

Para elegir el formateador deseado, establezca la propiedad Formatter de la cola, mensaje o componente MessageQueue con el que esté trabajando.

Ventajas del formato XML de mensajes

Una ventaja del formateador XML es que permite leer las cadenas que se crean cuando se serializan el objeto o los datos. Esto significa que, si por algún motivo, el mensaje no se puede recuperar de la cola de mensajes, se puede ver el mensaje y solucionar probablemente el problema.

Otra ventaja es que los mensajes serializados con este formateador no necesitan ser deserializados por el mismo objeto formateador. Es decir, no es necesario que el receptor y el remitente tengan la misma clase de formateador, mientras ambas partes conozcan el esquema de datos. Además, no es necesario deserializar los mensajes serializados por el formateador XML. La mayor parte de examinadores y demás visores XML pueden analizar los mensajes en formato XML.

Vea también

Tareas

Cómo: Crear instancias de componentes MessageQueue

Otros recursos

Enviar y serializar mensajes