Partager via


Sérialisation de messages

Mise à jour : novembre 2007

La sérialisation est le processus qui consiste à prendre des objets et à convertir leurs informations d'état sous une forme qu'il est possible de stocker ou de transférer. Le principe fondamental de la sérialisation est de permettre à un objet d'écrire son état actuel, généralement spécifié par la valeur de ses variables membres, sur un support de stockage persistant. L'objet peut ensuite être recréé en lisant, ou en "désérialisant", son état à partir de l'enregistrement. La sérialisation gère tous les détails des pointeurs d'objet et des références d'objet circulaires qui sont utilisés lorsque vous sérialisez un objet.

Dans le cadre de la fonctionnalité de mise en file d'attente des messages, la sérialisation fait surtout référence au processus de conversion d'un objet ou d'un groupe de données en un message qui peut être envoyé à une file d'attente et à celui qui consiste à reconvertir les messages récupérés de la file d'attente en objets ou données que votre application est en mesure de traiter.

Un objet formatter gère la sérialisation des messages dans vos applications Visual Studio ou .NET Framework. Lorsqu'un message est envoyé à une file d'attente, le formateur sérialise un objet en un flux qui peut être envoyé à la file d'attente de messages. Lors de la lecture d'une file d'attente, le formateur désérialise les données du message dans la propriété Body.

Vous choisissez le type approprié de formateur pour le type de données que vous souhaitez envoyer et recevoir. Visual Studio et le .NET Framework expédient trois formateurs prédéfinis, chacun conçu pour rendre persistant ou non un type différent de données :

  • L'objet XmlMessageFormatter rend des objets et des types de données primitifs persistants lorsque ceux-ci sont sérialisés en messages ou désérialisés à partir de messages à l'aide de chaînes XML explicites. Il s'agit du paramètre de formateur par défaut des composants MessageQueue.

  • L'objet BinaryMessageFormatter rend persistants un ou plusieurs objets connectés en flux sérialisés. Le résultat est très compact et rapide à analyser, mais il n'est pas explicite.

  • L'objet ActiveXMessageFormatter rend persistants des types de données primitifs, autorisant l'interopérabilité avec des composants qui utilisent des versions antérieures de Message Queuing. La sérialisation qui en résulte est très compacte. La conception de ce formateur repose sur Windows et ne fournit pas des résultats explicites. Il s'agit toutefois d'une méthode de sérialisation très rapide.

Par défaut, le système créé un XmlMessageFormatter lorsque vous créez une instance du composant MessageQueue qui est associé à cette instance. Lors de l'appel de la méthode Send sur l'instance MessageQueue, le corps de votre message est sérialisé avec ce formateur. Il n'est pas nécessaire d'écrire du code supplémentaire pour utiliser le formateur au cours d'une opération d'envoi.

La lecture d'un message est un peu plus complexe. Pour lire un message dans une file d'attente à l'aide d'un formateur, vous devez définir des propriétés précisant comment le corps de votre message doit être géré. Si vous utilisez l'objet XmlMessageFormatter, vous définissez la propriété TargetTypes ou TargetTypeNames. Si vous utilisez l'objet BinaryMessageFormatter, vous devez définir une autre série de propriétés. L'objet ActiveXMessageFormatter n'a pas de propriétés associées. Pour plus d'informations, consultez Lecture et réception de messages.

Vous avez la possibilité non seulement d'utiliser les formateurs fournis avec Visual Studio et le .NET Framework, mais aussi de créer vos propres formateurs si vous devez utiliser d'autres types de données. Vous pouvez importer un formateur dans un projet et y accéder par le code.

Choisissez le formateur à utiliser en définissant la propriété Formatter de la file d'attente, du message ou du composant MessageQueue que vous utilisez.

Avantages du formatage de message XML

Un des avantages du formateur XML est qu'il vous permet de lire les chaînes créées lors de la sérialisation de l'objet ou des données. Dans ce cas, si un problème survient et que le message est toujours persistant dans la file d'attente de messages, vous pouvez examiner le message vous-même et normalement résoudre le problème.

Il présente un autre avantage : les messages sérialisés avec ce formateur ne doivent pas être désérialisés avec le même objet formatter. En d'autres termes, vous n'avez pas besoin de la même classe formatter au niveau du récepteur et de l'émetteur, pour autant que les deux connaissent le schéma de données. Par ailleurs, les messages sérialisés avec le formateur XML ne doivent pas nécessairement être désérialisés. En effet, la plupart des navigateurs et autres visionneuses XML peuvent interpréter des messages XML.

Voir aussi

Tâches

Comment : créer des instances du composant MessageQueue

Autres ressources

Envoi et sérialisation de messages