Sérialisation binaireBinary serialization

La sérialisation peut être définie comme le processus de stockage de l'état d'un objet sur un support de stockage.Serialization can be defined as the process of storing the state of an object to a storage medium. Pendant ce processus, les champs publics et privés de l'objet et le nom de la classe, y compris l'assembly contenant la classe, sont convertis en un flux de données d'octets, écrit ensuite dans un flux de données.During this process, the public and private fields of the object and the name of the class, including the assembly containing the class, are converted to a stream of bytes, which is then written to a data stream. Lorsque l'objet est désérialisé par la suite, un clone exact de l'objet d'origine est créé.When the object is subsequently deserialized, an exact clone of the original object is created.

Lorsque vous implémentez un mécanisme de sérialisation dans un environnement orienté objet, vous devez faire plusieurs compromis entre facilité d'utilisation et souplesse.When implementing a serialization mechanism in an object-oriented environment, you have to make a number of tradeoffs between ease of use and flexibility. Le processus peut être automatisé en grande partie, à condition que vous puissiez suffisamment le contrôler.The process can be automated to a large extent, provided you are given sufficient control over the process. Par exemple, dans certaines situations, la sérialisation binaire simple n'est pas suffisante ou une raison particulière peut exiger la définition des champs à sérialiser.For example, situations may arise where simple binary serialization is not sufficient, or there might be a specific reason to decide which fields in a class need to be serialized. Les sections suivantes étudient le mécanisme de sérialisation fiable fourni avec .NET et mettent en évidence plusieurs fonctionnalités importantes qui vous permettent de personnaliser le processus en fonction de vos besoins.The following sections examine the robust serialization mechanism provided with .NET and highlight a number of important features that allow you to customize the process to meet your needs.

Notes

L'état d'un objet encodé UTF-8 ou UTF-7 n'est pas préservé si l'objet est sérialisé et désérialisé à l'aide de différentes versions du .NET Framework.The state of a UTF-8 or UTF-7 encoded object is not preserved if the object is serialized and deserialized using different .NET Framework versions.

Avertissement

La sérialisation binaire peut être dangereuse.Binary serialization can be dangerous. Ne désérialisez jamais des données d’une source non fiable et n’effectuez jamais un aller-retour des données sérialisées sur des systèmes qui ne sont pas sous votre contrôle.Never deserialize data from an untrusted source and never round-trip serialized data to systems not under your control.

Étant donné que la nature de la sérialisation binaire autorise la modification des membres privés à l’intérieur d’un objet, et par conséquent la modification de l’état de ce dernier, d’autres infrastructures de sérialisation qui opèrent sur la surface publique de l’API, comme JSON.NET, sont recommandées.As the nature of binary serialization allows the modification of private members inside an object and therefore changing the state of it, other serialization frameworks like JSON.NET which operate on the public API surface are recommended.

Sérialisation binaire dans .NET CoreBinary serialization in .NET Core

.NET Core prend en charge la sérialisation binaire avec un sous-ensemble de types..NET Core supports binary serialization with a subset of types. Vous trouverez la liste des types pris en charge dans la section Types sérialisables.You can see the list of supported types in the Serializable types section. L’ensemble défini des types est garanti comme étant sérialisable entre le .NET Framework 4.5.1 et versions ultérieures et .NET Core 2.0 et versions ultérieures.The defined set of types are guaranteed to be serializable between .NET Framework 4.5.1 and later versions and .NET Core 2.0 and later versions. D’autres implémentations de .NET, tels que Mono, ne sont pas officiellement prises en charge mais devraient également fonctionner.Other .NET implementations, such as Mono, aren't officially supported but should also be working.

Types sérialisablesSerializable types

Dans cette sectionIn this section

RéférenceReference

  • System.Runtime.Serialization
    Contient des classes qui peuvent être utilisées pour sérialiser et désérialiser des objets.Contains classes that can be used for serializing and deserializing objects.