Message Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce l'accesso alle proprietà necessarie per definire un messaggio di accodamento messaggi.
public ref class Message : System::ComponentModel::Component
public class Message : System.ComponentModel.Component
type Message = class
inherit Component
Public Class Message
Inherits Component
- Ereditarietà
Esempio
Nell'esempio di codice seguente viene illustrata la formattazione di un corpo del messaggio usando 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;
}
}
}
Imports System.Messaging
Imports System.Drawing
Imports System.IO
Namespace MyProj
_
Public Class MyNewQueue
'**************************************************
' Provides an entry point into the application.
'
' This example sends and receives a message from
' a queue.
'**************************************************
Public Shared Sub Main()
' Create a new instance of the class.
Dim myNewQueue As 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
End Sub
'**************************************************
' Creates a new queue.
'**************************************************
Public Shared Sub CreateQueue(queuePath As String)
Try
If Not MessageQueue.Exists(queuePath) Then
MessageQueue.Create(queuePath)
Else
Console.WriteLine((queuePath + " already exists."))
End If
Catch e As MessageQueueException
Console.WriteLine(e.Message)
End Try
End Sub
'**************************************************
' Sends an image to a queue, using the BinaryMessageFormatter.
'**************************************************
Public Sub 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.
Dim myImage As Image = Bitmap.FromFile("SentImage.bmp")
' Connect to a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
Dim myMessage As New Message(myImage, New BinaryMessageFormatter())
' Send the image to the queue.
myQueue.Send(myMessage)
Catch e As ArgumentException
Console.WriteLine(e.Message)
End Try
Return
End Sub
'**************************************************
' Receives a message containing an image.
'**************************************************
Public Sub ReceiveMessage()
Try
' Connect to the a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
' Set the formatter to indicate body contains an Order.
myQueue.Formatter = New BinaryMessageFormatter()
' Receive and format the message.
Dim myMessage As System.Messaging.Message = myQueue.Receive()
Dim myImage As Bitmap = CType(myMessage.Body, Bitmap)
' This will be saved in the \bin\debug or \bin\retail folder.
myImage.Save("ReceivedImage.bmp", System.Drawing.Imaging.ImageFormat.Bmp)
'Catch
' Handle Message Queuing exceptions.
' Handle invalid serialization format.
Catch e As InvalidOperationException
Console.WriteLine(e.Message)
Catch e As IOException
End Try
' Handle file access exceptions.
' Catch other exceptions as necessary.
Return
End Sub
End Class
End Namespace 'MyProj
Nell'esempio di codice seguente viene illustrata la formattazione di un corpo del messaggio usando XmlMessageFormatter.
#using <system.dll>
#using <system.messaging.dll>
#using <system.drawing.dll>
using namespace System;
using namespace System::Messaging;
using namespace System::Drawing;
using namespace System::IO;
ref class Order
{
public:
int orderId;
DateTime orderTime;
};
ref class MyNewQueue
{
public:
static void CreateQueue( String^ queuePath )
{
try
{
if ( !MessageQueue::Exists( queuePath ) )
{
MessageQueue::Create( queuePath );
}
else
{
Console::WriteLine( "{0} already exists.", queuePath );
}
}
catch ( MessageQueueException^ e )
{
Console::WriteLine( e->Message );
}
}
void SendMessage()
{
try
{
// Create a new order and set values.
Order^ sentOrder = gcnew Order;
sentOrder->orderId = 3;
sentOrder->orderTime = DateTime::Now;
// Connect to a queue on the local computer.
MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
// Create the new order.
Message^ myMessage = gcnew Message( sentOrder );
// Send the order to the queue.
myQueue->Send( myMessage );
}
catch ( ArgumentException^ e )
{
Console::WriteLine( e->Message );
}
return;
}
void ReceiveMessage()
{
// Connect to the a queue on the local computer.
MessageQueue^ myQueue = gcnew MessageQueue( ".\\myQueue" );
// Set the formatter to indicate body contains an Order.
array<Type^>^p = gcnew array<Type^>(1);
p[ 0 ] = Order::typeid;
myQueue->Formatter = gcnew XmlMessageFormatter( p );
try
{
// Receive and format the message.
Message^ myMessage = myQueue->Receive();
Order^ myOrder = dynamic_cast<Order^>(myMessage->Body);
// Display message information.
Console::WriteLine( "Order ID: {0}", myOrder->orderId );
Console::WriteLine( "Sent: {0}", myOrder->orderTime );
}
catch ( MessageQueueException^ )
{
// Handle Message Queuing exceptions.
}
// Handle invalid serialization format.
catch ( InvalidOperationException^ e )
{
Console::WriteLine( e->Message );
}
// Catch other exceptions as necessary.
return;
}
};
int main()
{
// Create a new instance of the class.
MyNewQueue^ myNewQueue = gcnew MyNewQueue;
// Create a queue on the local computer.
MyNewQueue::CreateQueue( ".\\myQueue" );
// Send a message to a queue.
myNewQueue->SendMessage();
// Receive a message from a queue.
myNewQueue->ReceiveMessage();
return 0;
}
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;
}
}
}
Imports System.Messaging
Imports System.Drawing
Imports System.IO
' The following example
' sends to a queue and receives from a queue.
Public Class Order
Public orderId As Integer
Public orderTime As DateTime
End Class
' Provides a container class for the example.
Public Class MyNewQueue
' Provides an entry point into the application.
'
' This example sends and receives a message from
' a queue.
Public Shared Sub Main()
' Create a new instance of the class.
Dim myNewQueue As 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
End Sub
' Creates a new queue.
Public Shared Sub CreateQueue(queuePath As String)
Try
If Not MessageQueue.Exists(queuePath) Then
MessageQueue.Create(queuePath)
Else
Console.WriteLine((queuePath + " already exists."))
End If
Catch e As MessageQueueException
Console.WriteLine(e.Message)
End Try
End Sub
' Sends an Order to a queue.
Public Sub SendMessage()
Try
' Create a new order and set values.
Dim sentOrder As New Order()
sentOrder.orderId = 3
sentOrder.orderTime = DateTime.Now
' Connect to a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
' Create the new order.
Dim myMessage As New Message(sentOrder)
' Send the order to the queue.
myQueue.Send(myMessage)
Catch e As ArgumentException
Console.WriteLine(e.Message)
End Try
Return
End Sub
' Receives a message containing an order.
Public Sub ReceiveMessage()
' Connect to the a queue on the local computer.
Dim myQueue As New MessageQueue(".\myQueue")
' Set the formatter to indicate body contains an Order.
myQueue.Formatter = New XmlMessageFormatter(New Type() {GetType(Order)})
Try
' Receive and format the message.
Dim myMessage As Message = myQueue.Receive()
Dim myOrder As Order = CType(myMessage.Body, Order)
' Display message information.
Console.WriteLine(("Order ID: " + myOrder.orderId.ToString()))
Console.WriteLine(("Sent: " + myOrder.orderTime.ToString()))
' Handle invalid serialization format.
Catch e As InvalidOperationException
Console.WriteLine(e.Message)
End Try
' Catch other exceptions as necessary.
Return
End Sub
End Class
Commenti
Usare la Message classe per visualizzare o ricevere messaggi da una coda o per avere un controllo corretto sulle proprietà dei messaggi durante l'invio di un messaggio a una coda.
MessageQueue usa la Message classe quando visualizza o riceve messaggi dalle code, perché entrambi i MessageQueue.Peek metodi e MessageQueue.Receive creano una nuova istanza della Message classe e impostano le proprietà dell'istanza. Le Message proprietà di sola lettura della classe si applicano al recupero dei messaggi da una coda, mentre le proprietà di lettura/scrittura si applicano all'invio e al recupero di messaggi. Quando MessageQueue visualizza o riceve un messaggio da una coda, la relativa MessageReadPropertyFilter proprietà determina quale delle proprietà del messaggio vengono recuperate.
Il MessageQueue metodo della Send classe consente di specificare qualsiasi tipo di oggetto per un messaggio inviato a tale coda. È possibile usare la MessageQueue proprietà dell'istanza DefaultPropertiesToSend per specificare le impostazioni per i messaggi generici inviati alla coda. I tipi di impostazioni includono formattatore, etichetta, crittografia e autenticazione. È anche possibile specificare valori per i membri appropriati DefaultPropertiesToSend quando si coordina l'applicazione di messaggistica per rispondere al riconoscimento e segnalare i messaggi. L'uso di un'istanza Message di per inviare un messaggio alla coda offre la flessibilità necessaria per accedere e modificare molte di queste proprietà, sia per un singolo messaggio che per messaggio. Message le proprietà hanno la precedenza su DefaultPropertiesToSend.
I dati dei Body messaggi vengono archiviati nella proprietà e in misura minore, le AppSpecific proprietà e Extension . Quando i dati dei messaggi vengono crittografati, serializzati o deserializzati, vengono interessati solo il contenuto della Body proprietà.
Il contenuto della Body proprietà viene serializzato quando il messaggio viene inviato, usando la Formatter proprietà specificata. Il contenuto serializzato si trova nella BodyStream proprietà . È anche possibile impostare direttamente la BodyStream proprietà, ad esempio per inviare un file come contenuto di dati di un messaggio. È possibile modificare le Body proprietà o Formatter in qualsiasi momento prima di inviare il messaggio e i dati verranno serializzati in modo appropriato quando si chiama Send.
Le proprietà definite dalla MessageQueue.DefaultPropertiesToSend proprietà si applicano solo ai messaggi che non sono di tipo Message. Se si specifica la DefaultPropertiesToSend proprietà per un MessageQueueoggetto , le proprietà denominate in modo identico in un'istanza Message inviata a tale coda determinano l'ignorare queste proprietà predefinite.
Per un elenco dei valori iniziali delle proprietà per un'istanza di Message, vedere il costruttore Message.
Costruttori
| Nome | Descrizione |
|---|---|
| Message() |
Inizializza una nuova istanza della Message classe con un corpo vuoto. |
| Message(Object, IMessageFormatter) |
Inizializza una nuova istanza della Message classe utilizzando il formattatore specificato per serializzare l'oggetto specificato nel corpo del messaggio. |
| Message(Object) |
Inizializza una nuova istanza della Message classe utilizzando per XmlMessageFormatter serializzare l'oggetto specificato nel corpo del messaggio. |
Campi
| Nome | Descrizione |
|---|---|
| InfiniteTimeout |
Specifica che non esiste alcun timeout. |
Proprietà
| Nome | Descrizione |
|---|---|
| AcknowledgeType |
Ottiene o imposta il tipo di messaggio di riconoscimento da restituire all'applicazione di invio. |
| Acknowledgment |
Ottiene la classificazione del riconoscimento rappresentato da questo messaggio. |
| AdministrationQueue |
Ottiene o imposta la coda che riceve i messaggi di riconoscimento generati da Accodamento messaggi. |
| AppSpecific |
Ottiene o imposta informazioni aggiuntive specifiche dell'applicazione. |
| ArrivedTime |
Ottiene l'ora in cui il messaggio è arrivato nella coda di destinazione. |
| AttachSenderId |
Ottiene o imposta un valore che indica se l'ID mittente deve essere associato al messaggio. |
| Authenticated |
Ottiene un valore che indica se il messaggio è stato autenticato. |
| AuthenticationProviderName |
Ottiene o imposta il nome del provider di crittografia utilizzato per generare la firma digitale del messaggio. |
| AuthenticationProviderType |
Ottiene o imposta il tipo di provider di crittografia utilizzato per generare la firma digitale del messaggio. |
| Body |
Ottiene o imposta il contenuto del messaggio. |
| BodyStream |
Ottiene o imposta le informazioni nel corpo del messaggio. |
| BodyType |
Ottiene o imposta il tipo di dati contenuti nel corpo del messaggio. |
| CanRaiseEvents |
Ottiene un valore che indica se il componente può generare un evento. (Ereditato da Component) |
| ConnectorType |
Ottiene o imposta un valore che indica che alcune proprietà del messaggio in genere impostate da Accodamento messaggi sono state impostate dall'applicazione di invio. |
| Container |
Ottiene l'oggetto IContainer contenente l'oggetto Component. (Ereditato da Component) |
| CorrelationId |
Ottiene o imposta l'identificatore del messaggio utilizzato dai messaggi di riconoscimento, report e risposta per fare riferimento al messaggio originale. |
| DesignMode |
Ottiene un valore che indica se è Component attualmente in modalità progettazione. (Ereditato da Component) |
| DestinationQueue |
Ottiene la coda di destinazione prevista per un messaggio. |
| DestinationSymmetricKey |
Ottiene o imposta la chiave simmetrica utilizzata per crittografare messaggi o messaggi crittografati dall'applicazione inviati a code esterne. |
| DigitalSignature |
Ottiene o imposta la firma digitale utilizzata da Accodamento messaggi per autenticare il messaggio. |
| EncryptionAlgorithm |
Ottiene o imposta l'algoritmo di crittografia utilizzato per crittografare il corpo di un messaggio privato. |
| Events |
Ottiene l'elenco dei gestori eventi associati a questo Componentoggetto . (Ereditato da Component) |
| Extension |
Ottiene o imposta informazioni aggiuntive definite dall'applicazione associate al messaggio. |
| Formatter |
Ottiene o imposta il formattatore utilizzato per serializzare un oggetto in o deserializzare un oggetto dal corpo del messaggio. |
| HashAlgorithm |
Ottiene o imposta l'algoritmo hash utilizzato da Accodamento messaggi durante l'autenticazione di un messaggio o la creazione di una firma digitale per un messaggio. |
| Id |
Ottiene l'identificatore del messaggio. |
| IsFirstInTransaction |
Ottiene un valore che indica se il messaggio è il primo messaggio inviato in una transazione. |
| IsLastInTransaction |
Ottiene un valore che indica se il messaggio è l'ultimo messaggio inviato in una transazione. |
| Label |
Ottiene o imposta una stringa Unicode definita dall'applicazione che descrive il messaggio. |
| LookupId |
Introdotto in MSMQ 3.0. Ottiene l'identificatore di ricerca del messaggio. |
| MessageType |
Ottiene il tipo di messaggio: |
| Priority |
Ottiene o imposta la priorità del messaggio, che determina dove viene posizionato il messaggio nella coda. |
| Recoverable |
Ottiene o imposta un valore che indica se il messaggio deve essere recapitato in caso di errore del computer o problema di rete. |
| ResponseQueue |
Ottiene o imposta la coda che riceve i messaggi di risposta generati dall'applicazione. |
| SecurityContext |
Ottiene o imposta il contesto di sicurezza per un messaggio. |
| SenderCertificate |
Ottiene o imposta il certificato di sicurezza utilizzato per autenticare i messaggi. |
| SenderId |
Ottiene l'identificatore dell'utente che invia. |
| SenderVersion |
Ottiene la versione di Accodamento messaggi utilizzata per inviare il messaggio. |
| SentTime |
Ottiene la data e l'ora nel computer di invio in cui il messaggio è stato inviato dal gestore code di origine. |
| Site |
Ottiene o imposta l'oggetto ISite dell'oggetto Component. (Ereditato da Component) |
| SourceMachine |
Ottiene il computer da cui ha avuto origine il messaggio. |
| TimeToBeReceived |
Ottiene o imposta la quantità massima di tempo per la ricezione del messaggio dalla coda di destinazione. |
| TimeToReachQueue |
Ottiene o imposta la quantità massima di tempo per il messaggio per raggiungere la coda. |
| TransactionId |
Ottiene l'identificatore per la transazione di cui il messaggio faceva parte. |
| TransactionStatusQueue |
Ottiene la coda dello stato della transazione nel computer di origine. |
| UseAuthentication |
Ottiene o imposta un valore che indica se il messaggio è stato autenticato (o deve essere) prima dell'invio. |
| UseDeadLetterQueue |
Ottiene o imposta un valore che indica se una copia del messaggio che non è stato recapitato deve essere inviata a una coda di messaggi non recapitabili. |
| UseEncryption |
Ottiene o imposta un valore che indica se rendere privato il messaggio. |
| UseJournalQueue |
Ottiene o imposta un valore che indica se una copia del messaggio deve essere mantenuta in un journal del computer di origine. |
| UseTracing |
Ottiene o imposta un valore che indica se tracciare un messaggio mentre si sposta verso la coda di destinazione. |
Metodi
| Nome | Descrizione |
|---|---|
| CreateObjRef(Type) |
Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare con un oggetto remoto. (Ereditato da MarshalByRefObject) |
| Dispose() |
Rilascia tutte le risorse usate da Component. (Ereditato da Component) |
| Dispose(Boolean) |
Rilascia le risorse non gestite usate da Component e, facoltativamente, rilascia le risorse gestite. (Ereditato da Component) |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetLifetimeService() |
Obsoleti.
Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| GetService(Type) |
Restituisce un oggetto che rappresenta un servizio fornito da Component o da Container. (Ereditato da Component) |
| GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
| InitializeLifetimeService() |
Obsoleti.
Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| MemberwiseClone() |
Crea una copia superficiale dell'oggetto corrente Object. (Ereditato da Object) |
| MemberwiseClone(Boolean) |
Crea una copia superficiale dell'oggetto corrente MarshalByRefObject . (Ereditato da MarshalByRefObject) |
| ToString() |
Restituisce un oggetto String contenente il nome dell'oggetto Component, se presente. Questo metodo non deve essere sottoposto a override. (Ereditato da Component) |
Eventi
| Nome | Descrizione |
|---|---|
| Disposed |
Si verifica quando il componente viene eliminato da una chiamata al Dispose() metodo . (Ereditato da Component) |