Serializzazione dei messaggi
Aggiornamento: novembre 2007
Il processo di serializzazione consiste nell'accettare gli oggetti e nel convertire le relative informazioni sullo stato in un form che è possibile memorizzare o trasferire. L'idea alla base della serializzazione è che un oggetto scrive il proprio stato corrente, in genere indicato dal valore delle variabili membro, in un archivio permanente. Successivamente sarà possibile ricreare l'oggetto tramite la lettura, anche detta deserializzazione, del relativo stato dall'archivio. Il meccanismo di serializzazione consente di gestire tutti i dettagli dei puntatori dell'oggetto e dei riferimenti circolari agli oggetti utilizzati quando si serializza un oggetto.
Nella funzionalità Accodamento messaggi, con il termine serializzazione si intende specificamente il processo di conversione di un oggetto o di un DataSet in un messaggio che può essere inviato a una coda e di riconversione dei messaggi recuperati dalla coda in oggetti o dati che possono essere elaborati dall'applicazione in uso.
Un oggetto formattatore gestisce la serializzazione dei messaggi nelle applicazioni di Visual Studio o .NET Framework. Quando un messaggio viene inviato alla coda, mediante il formattatore viene serializzato un oggetto in un flusso che può essere inviato alla coda di messaggi. Durante la lettura da una coda, i dati del messaggio nella proprietà Body vengono deserializzati mediante il formattatore.
È necessario scegliere il formattatore appropriato per il tipo di dati che si desidera inviare e ricevere. In Visual Studio e .NET Framework sono disponibili tre formattatori predefiniti, ciascuno dei quali è progettato per rendere o non rendere permanente un diverso tipo di dati:
L'oggetto XmlMessageFormatter rende gli oggetti e i tipi di dati primitivi permanenti all'interno e all'esterno dei messaggi mediante stringhe XML leggibili. Si tratta dell'impostazione del formattatore predefinita per i componenti MessageQueue.
L'oggetto BinaryMessageFormatter rende uno o più oggetti connessi permanenti in flussi serializzati. Il risultato è molto compatto e veloce da analizzare ma non è leggibile.
L'oggetto ActiveXMessageFormatter rende permanenti i tipi di dati primitivi, consentendo l'interoperabilità con i componenti in cui vengono utilizzate le precedenti versioni di Accodamento messaggi. La serializzazione risultante è molto compatta. Questo formattatore è stato progettato per il sistema operativo Windows e non produce risultati leggibili. Si tratta tuttavia di un metodo di serializzazione molto veloce.
Per impostazione predefinita, un oggetto XmlMessageFormatter viene creato automaticamente quando si crea un'istanza del componente MessageQueue, quindi viene associato a tale istanza. Quando il metodo Send viene chiamato sull'istanza del componente MessageQueue, il corpo del messaggio viene serializzato mediante questo formattatore. Per utilizzare il formattatore durante un'operazione di invio, non è necessario scrivere del codice aggiuntivo.
La lettura di un messaggio è leggermente più complessa. Per eseguire la lettura dalla coda mediante un formattatore, è necessario impostare le proprietà indicando la modalità di gestione del corpo del messaggio. Se si utilizza l'oggetto XmlMessageFormatter, è necessario impostare la proprietà TargetTypes o TargetTypeNames. Se si utilizza l'oggetto BinaryMessageFormatter, è necessario impostare una serie di proprietà differente. All'oggetto ActiveXMessageFormatter non è associata alcuna proprietà. Per ulteriori informazioni, vedere Lettura e ricezione di messaggi.
Oltre ai formattatori forniti in Visual Studio e in .NET Framework, è possibile creare formattatori personalizzati qualora sia necessario utilizzare tipi di dati differenti. È possibile importare il formattatore creato in un progetto e accedervi mediante il codice.
La scelta del formattatore desiderato viene effettuata impostando la proprietà Formatter per la coda, il messaggio o il componente MessageQueue in uso.
Vantaggi della formattazione dei messaggi in XML
Uno dei vantaggi offerti dal formattatore XML consiste nella possibilità di leggere le stringhe create durante la serializzazione dell'oggetto o dei dati. Di conseguenza, se si verifica un problema e il messaggio non può essere rimosso dalla coda di messaggi, sarà possibile visualizzare il messaggio stesso ed eventualmente correggere il problema.
Un altro vantaggio consiste nel fatto che i messaggi serializzati con questo formattatore non devono essere deserializzati dallo stesso oggetto formattatore, ovvero non è necessario che il destinatario e il mittente abbiano la stessa classe di formattatore, purché entrambe le parti conoscano lo schema di dati. Inoltre, i messaggi serializzati mediante il formattatore XML non devono essere necessariamente deserializzati. La maggior parte dei browser e altri visualizzatori XML consente l’analisi dei messaggi in formato XML.
Vedere anche
Attività
Procedura: creare istanze del componente MessageQueue