Serialización binariaBinary serialization

La serialización se puede definir como el proceso de almacenar el estado de un objeto a los medios de almacenamiento.Serialization can be defined as the process of storing the state of an object to a storage medium. Durante este proceso, los campos públicos y privados del objeto y el nombre de la clase, incluso el ensamblado que contiene la clase, se convierten en una secuencia de bytes, que se escribe a continuación en un flujo de datos.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. Cuando se deserializa el objeto como consecuencia, se crea un clon exacto del objeto original.When the object is subsequently deserialized, an exact clone of the original object is created.

Al implementar un mecanismo de la serialización en un entorno orientado a objetos, tiene que realizar varios intercambios entre la facilidad de uso y la flexibilidad.When implementing a serialization mechanism in an object-oriented environment, you have to make a number of tradeoffs between ease of use and flexibility. El proceso se puede automatizar en gran medida, con tal de que sea proporcionado el control suficiente sobre el proceso.The process can be automated to a large extent, provided you are given sufficient control over the process. Por ejemplo, las situaciones se pueden presentar donde la serialización binaria simple no es suficiente, o podría haber una razón concreta para decidir qué campos en una clase necesitan ser serializados.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. Las secciones siguientes examinan el sólido mecanismo de serialización proporcionado con .NET y resaltan varias características importantes que permiten personalizar el proceso para satisfacer las necesidades.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.

Nota

El estado de un objeto UTF-8 o UTF-7 codificado no se conserva si el objeto se serializa y se deserializa utilizando distintas versiones de .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.

Advertencia

La serialización binaria puede ser peligrosa.Binary serialization can be dangerous. No debe deserializar nunca datos de una fuente no fiable ni incluir datos serializados de ida y vuelta en un sistema que no controla usted.Never deserialize data from an untrusted source and never round-trip serialized data to systems not under your control.

Al igual que la naturaleza de la serialización binaria permite la modificación de los miembros privados de un objeto y, por tanto, cambiar el estado del mismo, se recomiendan otros marcos de trabajo de serialización como JSON.NET que operan en la superficie de la API pública.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.

Serialización binaria en .NET CoreBinary serialization in .NET Core

.NET Core es compatible con la serialización binaria con un subconjunto de tipos..NET Core supports binary serialization with a subset of types. Puede ver la lista de tipos compatibles en la sección Tipos serializables.You can see the list of supported types in the Serializable types section. Se garantiza que el conjunto definido de tipos es serializable entre .NET Framework 4.5.1 y versiones posteriores y .NET Core 2.0 y versiones posteriores.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. Otras implementaciones de .NET, como Mono, no son oficialmente compatibles, pero también deberían funcionar.Other .NET implementations, such as Mono, aren't officially supported but should also be working.

Tipos serializablesSerializable types

En esta secciónIn this section

ReferenciaReference

  • System.Runtime.Serialization
    Contiene clases que se pueden usar para serializar y deserializar objetos.Contains classes that can be used for serializing and deserializing objects.