Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La serialización es el proceso de convertir un objeto en un flujo de bytes para almacenar el objeto o transmitirlo a la memoria, una base de datos o un archivo. Su propósito principal es guardar el estado de un objeto para poder volver a crearlo cuando sea necesario. El proceso inverso se denomina deserialización.
Funcionamiento de la serialización
En esta ilustración se muestra el proceso general de serialización.
El objeto se serializa en una secuencia, que no solo incluye los datos, sino información sobre el tipo del objeto, como su versión, referencia cultural y nombre de ensamblado. Desde ese flujo, se puede almacenar en una base de datos, un archivo o la memoria.
Usos para la serialización
La serialización permite al desarrollador guardar el estado de un objeto y volver a crearlo según sea necesario, proporcionando almacenamiento de objetos, así como intercambio de datos. Mediante la serialización, un desarrollador puede realizar acciones como enviar el objeto a una aplicación remota mediante un servicio web, pasar un objeto de un dominio a otro, pasar un objeto a través de un firewall como una cadena XML o mantener información específica del usuario o de seguridad entre aplicaciones.
Serialización de JSON
El System.Text.Json espacio de nombres contiene clases para la serialización y deserialización de la notación de objetos JavaScript (JSON). JSON es un estándar abierto que se usa normalmente para compartir datos en la web.
La serialización JSON serializa las propiedades públicas de un objeto en una cadena, matriz de bytes o secuencia que se ajusta a la especificación JSON RFC 8259. Para controlar la forma JsonSerializer en que serializa o deserializa una instancia de la clase , puede usar uno o varios de los métodos siguientes:
- Uso de un JsonSerializerOptions objeto
- Aplique atributos del espacio de nombres System.Text.Json.Serialization a clases o propiedades.
- Personalización del contrato
- Implementación de convertidores personalizados
Serialización binaria y XML
El espacio de nombres System.Runtime.Serialization contiene clases para la serialización y deserialización binaria y XML.
En la serialización binaria, todos los miembros, incluso aquellos que son de solo lectura, se serializan y se mejora el rendimiento. La serialización XML proporciona un código más legible, así como una mayor flexibilidad para compartir y utilizar objetos con fines de interoperabilidad.
Advertencia
La serialización binaria con BinaryFormatter
puede ser peligrosa. Para más información, consulte la Guía de seguridad de BinaryFormatter y la Guía de migración de BinaryFormatter.
Convertir un objeto serializable
Para serializar un objeto mediante serialización binaria o XML, necesita que el objeto se serialice, una secuencia que contenga el objeto serializado y un Formatter. System.Runtime.Serialization contiene las clases necesarias para serializar y deserializar objetos.
Aplique el SerializableAttribute atributo a un tipo para indicar que se pueden serializar instancias de este tipo. Se produce una SerializationException excepción si intenta serializar, pero el tipo no tiene el SerializableAttribute atributo .
Si no desea que un campo dentro de la clase sea serializable, aplique el NonSerializedAttribute atributo . Si un campo de un tipo serializable contiene un puntero, un identificador o alguna otra estructura de datos específica de un entorno determinado, y el campo no se puede reconstituir significativamente en un entorno diferente, es posible que desee que sea no serializable.
Si una clase serializada contiene referencias a objetos de otras clases marcadas SerializableAttribute, esos objetos también se serializarán.
Serialización binaria
La serialización binaria usa la codificación binaria para generar serialización compacta para usos como flujos de red basados en almacenamiento o sockets.
Serialización XML
La serialización XML serializa los campos públicos y las propiedades de un objeto, o los parámetros y los valores devueltos de los métodos, en un flujo XML que se ajusta a un documento específico del lenguaje de definición de esquemas XML (XSD). La serialización XML da como resultado clases fuertemente tipadas con propiedades públicas y campos que se convierten en XML. System.Xml.Serialization contiene las clases necesarias para serializar y deserializar XML.
Puede aplicar atributos a clases y miembros de clase para controlar la forma en que serializa XmlSerializer o deserializa una instancia de la clase.
Serialización básica y personalizada
La serialización binaria y XML se puede realizar de dos maneras, básicas y personalizadas. La serialización básica usa .NET para serializar automáticamente el objeto.
El único requisito de serialización básica es que el objeto tiene aplicado el SerializableAttribute atributo . NonSerializedAttribute se puede usar para evitar que se serialicen campos específicos.
Cuando se usa la serialización básica, el control de versiones de los objetos puede crear problemas, en cuyo caso la serialización personalizada puede ser preferible. La serialización básica es la manera más fácil de realizar la serialización, pero no proporciona mucho control sobre el proceso.
En la serialización personalizada, puede especificar exactamente qué objetos se serializarán y cómo se realizará. La clase debe marcarse SerializableAttribute e implementar la ISerializable interfaz. Si desea que el objeto también se deserialice de forma personalizada, debe usar un constructor personalizado.
Serialización de diseñador
La serialización del diseñador es una forma especial de serialización que implica el tipo de persistencia de objetos normalmente asociada a las herramientas de desarrollo. La serialización de diseñador es un proceso que consiste en convertir un gráfico de objetos en un archivo de código fuente que puede utilizarse posteriormente para recuperar el gráfico de objetos. Un archivo de código fuente puede contener información de código, marcado o incluso de tabla SQL.
Artículos relacionados
Cómo: Leer datos de objeto de un archivo XML (Visual Basic)
Muestra cómo leer datos de objeto que se escribieron anteriormente en un archivo XML mediante la XmlSerializer clase .
Cómo: Escribir datos de objeto en un archivo XML (Visual Basic)
Muestra cómo escribir el objeto de una clase en un archivo XML mediante la XmlSerializer clase .