MessageQueue.Formatter, propriété
Mise à jour : novembre 2007
Obtient ou définit le formateur utilisé pour sérialiser un objet dans le corps d'un message lu ou écrit dans la file d'attente, ou pour désérialiser l'objet à partir de celui-ci.
Assembly : System.Messaging (dans System.Messaging.dll)
[MessagingDescriptionAttribute("MQ_Formatter")] [BrowsableAttribute(false)] public IMessageFormatter Formatter { get; set; }
/** @property */
/** @attribute MessagingDescriptionAttribute("MQ_Formatter") */
/** @attribute BrowsableAttribute(false) */
public IMessageFormatter get_Formatter()
/** @property */
/** @attribute MessagingDescriptionAttribute("MQ_Formatter") */
/** @attribute BrowsableAttribute(false) */
public void set_Formatter(IMessageFormatter value)
public function get Formatter () : IMessageFormatter public function set Formatter (value : IMessageFormatter)
Valeur de propriété
Type : System.Messaging.IMessageFormatterLe IMessageFormatter qui produit un flux à écrire dans le corps du message ou à lire à partir de celui-ci. La valeur par défaut est XmlMessageFormatter.
La propriété Formatter contient une instance d'un objet formateur qui transforme les messages lorsque votre application lit ou écrit dans la file d'attente.
Lorsque l'application envoie le message vers la file d'attente, le formateur sérialise l'objet dans un flux puis l'insère dans le corps du message. Lors de la lecture à partir d'une file d'attente, le formateur désérialise les données du message dans la propriété Body de Message.
La liaison de XmlMessageFormatter est libre ; il n'est donc pas nécessaire d'avoir le même type d'objet sur l'expéditeur et le destinataire lorsque vous utilisez ce format. Les ActiveXMessageFormatter et BinaryMessageFormatter sérialisent les données en représentation binaire. ActiveXMessageFormatter est utilisé pour l'envoi ou la réception de composants COM.
BinaryMessageFormatter et ActiveXMessageFormatter permettent d'obtenir un débit plus rapide que XmlMessageFormatter. ActiveXMessageFormatter permet une interopérabilité avec les applications Message Queuing de Visual Basic 6.0.
Lorsque votre application envoie des messages vers la file d'attente, MessageQueue.Formatter s'applique uniquement aux messages qui utilisent les propriétés de message par défaut DefaultPropertiesToSend. Si vous envoyez Message dans la file d'attente, Message Queuing utilise le formateur défini dans la propriété Message.Formatter pour sérialiser le corps du message.
La classe MessageQueue utilise toujours Message pour recevoir ou lire un message de la file d'attente. Le message est désérialisé à l'aide de la propriété MessageQueue.Formatter.
Le tableau suivant montre si cette propriété est disponible dans différents modes groupe de travail.
Mode groupe de travail | Disponible |
|---|---|
Ordinateur local | Oui |
Ordinateur local et nom de format direct | Oui |
Ordinateur distant | Non |
Ordinateur distant et nom de format direct | Oui |
L'exemple de code suivant illustre la mise en forme d'un corps de message à l'aide de BinaryMessageFormatter.
using System; using System.Messaging; using System.Drawing; using System.IO; namespace MyProject { /// <summary> /// Provides a container class for the example. /// </summary> public class MyNewQueue { //************************************************** // Provides an entry point into the application. // // This example sends and receives a message from // a queue. //************************************************** public static void Main() { // Create a new instance of the class. MyNewQueue myNewQueue = new MyNewQueue(); // Create a queue on the local computer. CreateQueue(".\\myQueue"); // Send a message to a queue. myNewQueue.SendMessage(); // Receive a message from a queue. myNewQueue.ReceiveMessage(); return; } //************************************************** // Creates a new queue. //************************************************** public static void CreateQueue(string queuePath) { try { if(!MessageQueue.Exists(queuePath)) { MessageQueue.Create(queuePath); } else { Console.WriteLine(queuePath + " already exists."); } } catch (MessageQueueException e) { Console.WriteLine(e.Message); } } //************************************************** // Sends an image to a queue, using the BinaryMessageFormatter. //************************************************** public void SendMessage() { try{ // Create a new bitmap. // The file must be in the \bin\debug or \bin\retail folder, or // you must give a full path to its location. Image myImage = Bitmap.FromFile("SentImage.bmp"); // Connect to a queue on the local computer. MessageQueue myQueue = new MessageQueue(".\\myQueue"); Message myMessage = new Message(myImage, new BinaryMessageFormatter()); // Send the image to the queue. myQueue.Send(myMessage); } catch(ArgumentException e) { Console.WriteLine(e.Message); } return; } //************************************************** // Receives a message containing an image. //************************************************** public void ReceiveMessage() { try { // Connect to the a queue on the local computer. MessageQueue myQueue = new MessageQueue(".\\myQueue"); // Set the formatter to indicate body contains an Order. myQueue.Formatter = new BinaryMessageFormatter(); // Receive and format the message. System.Messaging.Message myMessage = myQueue.Receive(); Bitmap myImage = (Bitmap)myMessage.Body; // This will be saved in the \bin\debug or \bin\retail folder. myImage.Save("ReceivedImage.bmp",System.Drawing.Imaging.ImageFormat.Bmp); } catch (MessageQueueException) { // Handle Message Queuing exceptions. } // Handle invalid serialization format. catch (InvalidOperationException e) { Console.WriteLine(e.Message); } catch (IOException e) { // Handle file access exceptions. } // Catch other exceptions as necessary. return; } } }
package MyProject;
import System.*;
import System.Messaging.*;
import System.Drawing.*;
import System.IO.*;
/// <summary>
/// Provides a container class for the example.
/// </summary>
public class MyNewQueue
{
//**************************************************
// Provides an entry point into the application.
//
// This example sends and receives a message from
// a queue.
//**************************************************
public static void main(String[] args)
{
// Create a new instance of the class.
MyNewQueue myNewQueue = new MyNewQueue();
// Create a queue on the local computer.
CreateQueue(".\\myQueue");
// Send a message to a queue.
myNewQueue.SendMessage();
// Receive a message from a queue.
myNewQueue.ReceiveMessage();
return;
} //main
//**************************************************
// Creates a new queue.
//**************************************************
public static void CreateQueue(String queuePath)
{
try {
if (!(MessageQueue.Exists(queuePath))) {
MessageQueue.Create(queuePath);
}
else {
Console.WriteLine(queuePath + " already exists.");
}
}
catch (MessageQueueException e) {
Console.WriteLine(e.get_Message());
}
} //CreateQueue
//**************************************************
// Sends an image to a queue, using the BinaryMessageFormatter.
//**************************************************
public void SendMessage()
{
try {
// Create a new bitmap.
// The file must be in the \bin\debug or \bin\retail folder, or
// you must give a full path to its location.
Image myImage = Bitmap.FromFile("SentImage.bmp");
// Connect to a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
Message myMessage = new Message(myImage,
new BinaryMessageFormatter());
// Send the image to the queue.
myQueue.Send(myMessage);
}
catch (ArgumentException e) {
Console.WriteLine(e.get_Message());
}
return;
} //SendMessage
//**************************************************
// Receives a message containing an image.
//**************************************************
public void ReceiveMessage()
{
try {
// Connect to the a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
// Set the formatter to indicate body contains an Order.
myQueue.set_Formatter(new BinaryMessageFormatter());
// Receive and format the message.
System.Messaging.Message myMessage = myQueue.Receive();
Bitmap myImage = (Bitmap)myMessage.get_Body();
// This will be saved in the \bin\debug or \bin\retail folder.
myImage.Save("ReceivedImage.bmp",
System.Drawing.Imaging.ImageFormat.get_Bmp());
}
catch (MessageQueueException exp) {
// Handle Message Queuing exceptions.
}
// Handle invalid serialization format.
catch (InvalidOperationException e) {
Console.WriteLine(e.get_Message());
}
catch (IOException e) {
// Handle file access exceptions.
}
// Catch other exceptions as necessary.
return;
} //ReceiveMessage
} //MyNewQueue
L'exemple de code suivant illustre la mise en forme d'un corps de message à l'aide de XmlMessageFormatter.
using System; using System.Messaging; using System.Drawing; using System.IO; namespace MyProject { // The following example // sends to a queue and receives from a queue. public class Order { public int orderId; public DateTime orderTime; }; /// <summary> /// Provides a container class for the example. /// </summary> public class MyNewQueue { //************************************************** // Provides an entry point into the application. // // This example sends and receives a message from // a queue. //************************************************** public static void Main() { // Create a new instance of the class. MyNewQueue myNewQueue = new MyNewQueue(); // Create a queue on the local computer. CreateQueue(".\\myQueue"); // Send a message to a queue. myNewQueue.SendMessage(); // Receive a message from a queue. myNewQueue.ReceiveMessage(); return; } //************************************************** // Creates a new queue. //************************************************** public static void CreateQueue(string queuePath) { try { if(!MessageQueue.Exists(queuePath)) { MessageQueue.Create(queuePath); } else { Console.WriteLine(queuePath + " already exists."); } } catch (MessageQueueException e) { Console.WriteLine(e.Message); } } //************************************************** // Sends an Order to a queue. //************************************************** public void SendMessage() { try { // Create a new order and set values. Order sentOrder = new Order(); sentOrder.orderId = 3; sentOrder.orderTime = DateTime.Now; // Connect to a queue on the local computer. MessageQueue myQueue = new MessageQueue(".\\myQueue"); // Create the new order. Message myMessage = new Message(sentOrder); // Send the order to the queue. myQueue.Send(myMessage); } catch(ArgumentException e) { Console.WriteLine(e.Message); } return; } //************************************************** // Receives a message containing an order. //************************************************** public void ReceiveMessage() { // Connect to the a queue on the local computer. MessageQueue myQueue = new MessageQueue(".\\myQueue"); // Set the formatter to indicate body contains an Order. myQueue.Formatter = new XmlMessageFormatter(new Type[] {typeof(MyProject.Order)}); try { // Receive and format the message. Message myMessage = myQueue.Receive(); Order myOrder = (Order)myMessage.Body; // Display message information. Console.WriteLine("Order ID: " + myOrder.orderId.ToString()); Console.WriteLine("Sent: " + myOrder.orderTime.ToString()); } catch (MessageQueueException) { // Handle Message Queuing exceptions. } // Handle invalid serialization format. catch (InvalidOperationException e) { Console.WriteLine(e.Message); } // Catch other exceptions as necessary. return; } } }
package MyProject;
import System.*;
import System.Messaging.*;
import System.Drawing.*;
import System.IO.*;
// The following example
// sends to a queue and receives from a queue.
public class Order
{
public int orderId;
public DateTime orderTime;
} //Order
/// <summary>
/// Provides a container class for the example.
/// </summary>
public class MyNewQueue
{
//**************************************************
// Provides an entry point into the application.
//
// This example sends and receives a message from
// a queue.
//**************************************************
public static void main(String[] args)
{
// Create a new instance of the class.
MyNewQueue myNewQueue = new MyNewQueue();
// Create a queue on the local computer.
CreateQueue(".\\myQueue");
// Send a message to a queue.
myNewQueue.SendMessage();
// Receive a message from a queue.
myNewQueue.ReceiveMessage();
return;
} //main
//**************************************************
// Creates a new queue.
//**************************************************
public static void CreateQueue(String queuePath)
{
try {
if (!(MessageQueue.Exists(queuePath))) {
MessageQueue.Create(queuePath);
}
else {
Console.WriteLine(queuePath + " already exists.");
}
}
catch (MessageQueueException e) {
Console.WriteLine(e.get_Message());
}
} //CreateQueue
//**************************************************
// Sends an Order to a queue.
//**************************************************
public void SendMessage()
{
try {
// Create a new order and set values.
Order sentOrder = new Order();
sentOrder.orderId = 3;
sentOrder.orderTime = DateTime.get_Now();
// Connect to a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
// Create the new order.
Message myMessage = new Message(sentOrder);
// Send the order to the queue.
myQueue.Send(myMessage);
}
catch (ArgumentException e) {
Console.WriteLine(e.get_Message());
}
return;
} //SendMessage
//**************************************************
// Receives a message containing an order.
//**************************************************
public void ReceiveMessage()
{
// Connect to the a queue on the local computer.
MessageQueue myQueue = new MessageQueue(".\\myQueue");
// Set the formatter to indicate body contains an Order.
myQueue.set_Formatter(new XmlMessageFormatter(new Type[]
{ MyProject.Order.class.ToType() }));
try {
// Receive and format the message.
Message myMessage = myQueue.Receive();
Order myOrder = (Order)myMessage.get_Body();
// Display message information.
Console.WriteLine("Order ID: " + Convert.ToString(myOrder.orderId));
Console.WriteLine("Sent: " + myOrder.orderTime.ToString());
}
catch (MessageQueueException exp) {
// Handle Message Queuing exceptions.
}
// Handle invalid serialization format.
catch (InvalidOperationException e) {
Console.WriteLine(e.get_Message());
}
// Catch other exceptions as necessary.
return;
} //ReceiveMessage
} //MyNewQueue
- Confiance totale accordée à l'appelant immédiat. Ce membre ne peut pas être utilisé par du code d'un niveau de confiance partiel. Pour plus d'informations, consultez Utilisation de bibliothèques à partir de code d'un niveau de confiance partiel.
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC
Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.