Partager via


Sérialisation (Visual Basic)

La sérialisation est le processus de conversion d’un objet en flux d’octets afin de stocker l’objet ou de le transmettre à la mémoire, à une base de données ou à un fichier. Son objectif principal est d’enregistrer l’état d’un objet afin de pouvoir le recréer si nécessaire. Le processus inverse est appelé désérialisation.

Fonctionnement de la sérialisation

Cette illustration montre le processus global de sérialisation.

Graphique de sérialisation

L’objet est sérialisé dans un flux, qui contient non seulement les données, mais des informations sur le type de l’objet, telles que sa version, sa culture et son nom d’assembly. À partir de ce flux, il peut être stocké dans une base de données, un fichier ou une mémoire.

Utilisations pour la sérialisation

La sérialisation permet au développeur d’enregistrer l’état d’un objet et de le recréer en fonction des besoins, en fournissant le stockage des objets ainsi que l’échange de données. Grâce à la sérialisation, un développeur peut effectuer des actions telles que l’envoi de l’objet à une application distante par le biais d’un service web, en passant un objet d’un domaine à un autre, en passant un objet via un pare-feu sous forme de chaîne XML, ou en conservant des informations spécifiques à la sécurité ou à l’utilisateur entre les applications.

Sérialisation JSON

L’espace System.Text.Json de noms contient des classes pour la sérialisation et la désérialisation javaScript Object Notation (JSON). JSON est une norme ouverte couramment utilisée pour partager des données sur le web.

La sérialisation JSON sérialise les propriétés publiques d’un objet dans une chaîne, un tableau d’octets ou un flux conforme à la spécification JSON RFC 8259. Pour contrôler la façon dont JsonSerializer sérialise ou désérialise une instance de la classe, vous pouvez utiliser une ou plusieurs des approches suivantes :

Sérialisation binaire et XML

L’espace System.Runtime.Serialization de noms contient des classes pour la sérialisation binaire et XML et la désérialisation.

Dans la sérialisation binaire, tous les membres, même ceux qui sont en lecture seule, sont sérialisés et les performances sont améliorées. La sérialisation XML fournit un code plus lisible, ainsi qu’une plus grande flexibilité du partage d’objets et de l’utilisation à des fins d’interopérabilité.

Avertissement

La sérialisation binaire avec BinaryFormatter peut être dangereuse. Pour plus d’informations, consultez le Guide de la sécurité de BinaryFormatter et le Guide de migration de BinaryFormatter.

Création d’un objet sérialisable

Pour sérialiser un objet à l’aide de la sérialisation binaire ou XML, vous avez besoin de l’objet pour sérialiser, un flux contenant l’objet sérialisé et un Formatter. System.Runtime.Serialization contient les classes nécessaires pour sérialiser et désérialiser des objets.

Appliquez l’attribut SerializableAttribute à un type pour indiquer que les instances de ce type peuvent être sérialisées. Une SerializationException exception est levée si vous tentez de sérialiser, mais que le type n’a pas l’attribut SerializableAttribute .

Si vous ne souhaitez pas qu’un champ de votre classe soit sérialisable, appliquez l’attribut NonSerializedAttribute . Si un champ d’un type sérialisable contient un pointeur, un handle ou une autre structure de données spécifique à un environnement particulier et que le champ ne peut pas être reconstitué de manière significative dans un autre environnement, vous pouvez le rendre non modifiable.

Si une classe sérialisée contient des références à des objets d’autres classes marquées SerializableAttribute, ces objets sont également sérialisés.

Sérialisation binaire

La sérialisation binaire utilise l’encodage binaire pour produire une sérialisation compacte pour des utilisations telles que des flux de réseau basés sur un stockage ou un socket.

Sérialisation XML

La sérialisation XML sérialise les champs et propriétés publics d’un objet, ou les paramètres et valeurs de retour des méthodes, dans un flux XML conforme à un document XSD (XML Schema Definition Language) spécifique. La sérialisation XML génère des classes fortement typées avec des propriétés publiques et des champs convertis en XML. System.Xml.Serialization contient les classes nécessaires pour sérialiser et désérialiser du code XML.

Vous pouvez appliquer des attributs aux classes et aux membres de classe pour contrôler la façon dont les XmlSerializer sérialises ou désérialisent une instance de la classe.

Sérialisation de base et personnalisée

La sérialisation binaire et XML peut être effectuée de deux façons, de base et personnalisée. La sérialisation de base utilise .NET pour sérialiser automatiquement l’objet.

La seule exigence dans la sérialisation de base est que l’objet a l’attribut SerializableAttribute appliqué. Vous NonSerializedAttribute pouvez l’utiliser pour empêcher la sérialisation de champs spécifiques.

Lorsque vous utilisez la sérialisation de base, le contrôle de version des objets peut créer des problèmes, auquel cas la sérialisation personnalisée peut être préférable. La sérialisation de base est le moyen le plus simple d’effectuer la sérialisation, mais elle ne fournit pas beaucoup de contrôle sur le processus.

Dans la sérialisation personnalisée, vous pouvez spécifier exactement quels objets seront sérialisés et comment il sera effectué. La classe doit être marquée SerializableAttribute et implémenter l’interface ISerializable . Si vous souhaitez que votre objet soit désérialisé de manière personnalisée, vous devez également utiliser un constructeur personnalisé.

Sérialisation du concepteur

La sérialisation du concepteur est une forme spéciale de sérialisation qui implique le type de persistance d’objet généralement associée aux outils de développement. La sérialisation du concepteur est le processus de conversion d’un graphique d’objet en fichier source qui peut être utilisé ultérieurement pour récupérer le graphique d’objets. Un fichier source peut contenir du code, du balisage ou même des informations de table SQL.

Articles connexes

Guide pratique pour lire des données d’objet à partir d’un fichier XML (Visual Basic)
Montre comment lire les données d’objet précédemment écrites dans un fichier XML à l’aide de la XmlSerializer classe.

Guide pratique pour écrire des données d’objet dans un fichier XML (Visual Basic)
Montre comment écrire l’objet d’une classe dans un fichier XML à l’aide de la XmlSerializer classe.