Cómo crear a un formateador de mensajes personalizado utilizando C#

Seleccione idioma Seleccione idioma
Id. de artículo: 310683 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso se muestra cómo utilizar C# para crear a un formateador personalizado de mensaje sencillo.

El espacio de nombres System.Messaging proporciona clases que permiten conectarse a colas de mensajes, enviar mensajes y recibir o buscar mensajes de colas. Cuando envía un mensaje a la cola, se serializan objetos mediante el formateador de mensajes en el cuerpo del mensaje. El espacio de nombres System.Messaging incluye a los tres formateadores siguientes:
  • XmlMessageFormatter (predeterminado)
  • BinaryMessageFormatter
  • ActiveXMessageFormatter
En determinadas situaciones, quizás tenga que desarrollar a un formateador de mensaje personalizado que puede serializar cadenas en el cuerpo del mensaje y deserializar las cadenas cuando se leen los mensajes de la cola.

Para crear a un formateador de mensaje personalizado, debe implementar la interfaz IMessageFormatter , que se incluye en el espacio de nombres System.Messaging . Esta interfaz especifica los tres métodos siguientes:
  • escribir
  • lectura
  • CanRead
Dado que esta interfaz implementa la interfaz ICloneable , también debe implementarse el método Clone .

Declaración de clase

En este ejemplo, la clase de formateador se denomina MyFormatter y se declara del siguiente modo:
using System;
using System.IO;
using System.Text;
using System.Messaging;

public class MyFormatter : IMessageFormatter
{

	public MyFormatter()
	{
		//The constructor can remain empty.
	}
}
				
tenga en cuenta que es necesaria una referencia de proyecto al System.Messaging.DLL . Para agregar esta referencia en Visual Studio. NET, haga clic con el botón secundario en referencias y seleccione Agregar referencia .

Write (método)

El método Write serializa los objetos en el cuerpo del mensaje cuando el mensaje se envía a la cola. En este ejemplo, el formateador toma en una cadena y serializa utilizando la codificación UTF8. El método de amortización se implementa como sigue:
public void Write (System.Messaging.Message msg, object obj)
{
	//Declare a buffer.
	byte[] buff;

	//Place the string into the buffer using UTF8 encoding.
	buff = Encoding.UTF8.GetBytes (obj.ToString());

	//Create a new MemoryStream object passing the buffer.
	Stream stm = new MemoryStream(buff);

	//Assign the stream to the message's BodyStream property.
	msg.BodyStream = stm;
} 
				

Método de lectura

El método Read deserializa el cuerpo del mensaje cuando se lee o búsqueda peek el mensaje de la cola. Básicamente, el método Read invierte el proceso que se realiza con el método Write .
public object Read (System.Messaging.Message msg)
{
	//Obtain the BodyStream for the message.
	Stream stm = msg.BodyStream;

	//Create a StreamReader object used for reading from the stream.
	StreamReader reader = new StreamReader (stm);

	//Return the string read from the stream.
	//StreamReader.ReadToEnd returns a string.
	return reader.ReadToEnd();
}
				

Método CanRead

El método CanRead intenta determinar si el formateador puede controlar el mensaje que se pasa a ella. Para mayor brevedad, este formateador se supone que el cuerpo del mensaje es una cadena (todo en la cola se enviaron mensajes con este formateador) y devuelve True.
public bool CanRead (System.Messaging.Message msg)
{
	return true;
}
				

El método Clone

El método Clone devuelve una nueva instancia del formateador.
public object Clone()
{
	return new MyFormatter();
}
				

Utilizar el formateador

Una vez implementado el formateador, puede establecer la propiedad Formatter del objeto MessageQueue en una nueva instancia de este formateador como sigue:
//Open an existing public queue called Test.	
MessageQueue msgQueue = new MessageQueue (@".\test");
//Set the Formatter property.
msgQueue.Formatter = new MyFormatter();
//Send a test message.
msgQueue.Send ("Test string message");
				

Propiedades

Id. de artículo: 310683 - Última revisión: lunes, 11 de diciembre de 2006 - Versión: 1.7
La información de este artículo se refiere a:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
Palabras clave: 
kbmt kbbcl kbhowtomaster kbsample KB310683 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 310683

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com