Explicar la serialización y la deserialización en C#

Explicar la serialización y la deserialización en C#
Publicación por entregas se refiere al acto de transformar un objeto en un formato que puede transmitirse o almacenarse, mientras que la deserialización es el proceso de convertir los datos serializados a su forma inicial.

Este artículo explicará publicación por entregas y deserialización En C# con un ejemplo.

Serialización en C#

Para convertir un objeto en un formato que se puede almacenar o transmitir a través de una serialización de red y este formato puede ser un formato XML, formato binario o cualquier otro formato. Publicación por entregas se utiliza para el almacenamiento y transmisión de datos, y es un concepto importante en la programación de C#.

Tomemos un ejemplo para comprender la serialización en C#, supongamos que tenemos un "Empleado" clase que contiene el nombre, la identificación y el salario del empleado:

usando el sistema;
Uso del sistema.Io;
Uso del sistema.Tiempo de ejecución.Publicación por entregas;
Uso del sistema.Tiempo de ejecución.Publicación por entregas.Json;
[DataContract]
empleado de clase pública

[DataMember]
nombre de cadena pública get; colocar;
[DataMember]
public int id get; colocar;
[DataMember]
Salario doble público Get; colocar;

programa de clase

static void main (string [] args)

Empleado emp = nuevo empleado name = "mark", id = 005, salario = 10000;
DataContractSerializer Serializer = new DataContractSerializer (typeof (empleado));
Usando (MemoryStream Stream = New MemoryStream ())

serializador.WriteObject (Stream, EMP);
byte [] SerializedData = stream.ToArray ();
Consola.WriteLine ("Datos serializados:");
Consola.WriteLine (BitConverter.Tostring (SerializedData).Reemplazar("-", ""));
// Escribe los datos serializados en un archivo usando FilErteam
String filename = "datos serializados.papelera";
cadena filepath = ruta.Combinar (entorno.CurrentDirectory, nombre de archivo);
usando (FileStreamFilErteam = New FilEstream (FilePath, FileMode.Crear))

flujo de filtro.Escribir (serializedData, 0, serializedData.Longitud);

Consola.WriteLine ($ "Datos serializados guardados en el archivo: FilePath");


El código C# anterior demuestra cómo serializar un objeto de una clase personalizada nombrada "Empleado" utilizando el DatacontractSerializer clase de la Sistema.Tiempo de ejecución.Publicación por entregas espacio de nombres. La clase tiene tres propiedades: nombre, identificación y salario, todos los cuales están marcados con el Datamember atributo para indicar que deben incluirse en el proceso de serialización.

En Main, una instancia del Empleado Se crea la clase y sus propiedades se establecen con datos de muestra y el DatacontractSerializer Luego se usa para serializar el objeto en una matriz de bytes, que se guarda en un archivo utilizando un FileStream. La ruta del archivo se especifica utilizando el Camino.Combinar y Ambiente.Directorio actual() funciones y luego los datos serializados se muestran en la consola junto con la ruta del archivo:

Deserialización en C#

Deserialización es el proceso de convertir datos serializados, típicamente almacenados en un archivo, o transmitido a través de una red, nuevamente en su formulario original. En c#, el proceso de deserialización implica crear un objeto a partir de su forma serializada, que se puede lograr utilizando varias clases incorporadas como el DatacontractSerializer o el XmlSerializer.

Tomemos un ejemplo para comprender la deserialización en C# y usemos el mismo archivo serializado que creamos anteriormente y lo deserializamos, a continuación se encuentra el código para ello:

usando el sistema;
Uso del sistema.Io;
Uso del sistema.Tiempo de ejecución.Publicación por entregas;
Uso del sistema.Tiempo de ejecución.Publicación por entregas.Json;
[DataContract]
empleado de clase pública

[DataMember]
nombre de cadena pública get; colocar;
[DataMember]
public int id get; colocar;
[DataMember]
Salario doble público Get; colocar;

programa de clase

static void main (string [] args)

DataContractSerializer Serializer = new DataContractSerializer (typeof (empleado));
// Lea los datos serializados del archivo utilizando FileStream
String filename = "datos serializados.papelera";
cadena filepath = ruta.Combinar (entorno.CurrentDirectory, nombre de archivo);
usando (FileSteamreadStream = new FileStream (FilePath, FileMode.Abierto))

Empleado deserializedemp = (empleado) serializador.ReadObject (readStream);
Consola.WriteLine ($ "Empleado deserializado: Nombre - DeserializedMp.Nombre, ID - deserializedEmp.Id, salario - deserializedempr.Salario");


El código C# anterior usa el DatacontractSerializer clase para deserializar un objeto 'empleado' que ha sido serializado y guardado previamente en un archivo binario. La clase de empleado se define con Datamember atributos en sus propiedades para indicar que estos deben ser serializados/deserializados. El principal crea una instancia del serializador y abre el archivo binario utilizando un FileStream y la función ReadObject () del serializador () se usa para leer los datos serializados y crear un nuevo objeto de empleado. El objeto del empleado se imprime en la consola para confirmar que se ha deserializado con éxito.

Pensamientos finales

En la programación de C#, publicación por entregas y deserialización son conceptos vitales utilizados para el almacenamiento y transmisión de datos. Publicación por entregas implica transformar un objeto en un formato adecuado para el almacenamiento o transmisión, mientras que deserialización implica el proceso inverso de convertir los datos serializados a su forma original. En el ejemplo de código proporcionado, el DatacontractSerializer La clase se usa para serializar una instancia de la clase de empleados en una matriz de bytes, que luego se guarda en un archivo. El deserialización El proceso implica leer los datos serializados del archivo y usar el mismo serializador para deserializarlo en una instancia de la clase de empleados.