Explique a serialização e a desserialização em C#

Explique a serialização e a desserialização em C#
Serialização refere -se ao ato de transformar um objeto em um formato que pode ser transmitido ou armazenado, enquanto a desserialização é o processo de converter os dados serializados de volta à sua forma inicial.

Este artigo explicará serialização e Deserialização em C# com um exemplo.

Serialização em C#

Para converter um objeto em um formato que pode ser armazenado ou transmitido por uma serialização de rede, é usado e esse formato pode ser um formato XML, formato binário ou qualquer outro formato. Serialização é usado para armazenamento e transmissão de dados, e é um conceito importante na programação C#.

Vamos dar um exemplo para entender a serialização em C#, suponha que tenhamos um "Funcionário" classe que contém o nome, ID e salário do funcionário:

usando o sistema;
usando o sistema.Io;
usando o sistema.Tempo de execução.Serialização;
usando o sistema.Tempo de execução.Serialização.JSON;
[Datacontract]
funcionário de classe pública

[DataMember]
Nome da String Public get; definir;
[DataMember]
public int id get; definir;
[DataMember]
public duplo salário get; definir;

programa de classe

estático void main (string [] args)

Funcionário emp = novo funcionário name = "mark", id = 005, salário = 10000;
Serializador de datacrontractSerializer = new DatacontractSerializer (typeof (funcionário));
Usando (MemoryStream Stream = new MemoryStream ())

serializador.WriteObject (Stream, EMP);
byte [] serializedData = stream.ToArray ();
Console.WriteLine ("dados serializados:");
Console.WriteLine (BitConverter.ToString (Data serializada).Substituir("-", ""));
// Escreva os dados serializados em um arquivo usando o FileStream
string filename = "Data serializada.bin ";
string filepath = caminho.Combine (ambiente.CurrentDirectory, nome do arquivo);
Usando (filestreamFilestream = new FileStream (FilePath, Filemode.Criar))

FILESTREAM.Write (serializedData, 0, serializedData.Comprimento);

Console.WriteLine ($ "Dados serializados salvos no arquivo: filepath");


O código C# acima demonstra como serializar um objeto de uma classe personalizada nomeada "Funcionário" usando o DataContractSerializer classe do Sistema.Tempo de execução.Serialização espaço para nome. A classe tem três propriedades: nome, id e salário, todos marcados com o DataMember atributo para indicar que eles devem ser incluídos no processo de serialização.

Em Main, um exemplo do Funcionário a classe é criada e suas propriedades são definidas com dados de amostra e o DataContractSerializer é então usado para serializar o objeto em uma matriz de bytes, que é salva em um arquivo usando um FileStream. O caminho do arquivo é especificado usando o Caminho.Combinar e Ambiente.Diretório atual() Funções e os dados serializados são exibidos no console junto com o caminho do arquivo:

Desserialização em C#

Deserialização é o processo de conversão de dados serializados, normalmente armazenados em um arquivo, ou transmitidos por uma rede, de volta à sua forma original. Em C#, o processo de Deserialização envolve a criação de um objeto a partir de sua forma serializada, que pode ser alcançada usando várias classes internas, como o DataContractSerializer ou o XMLSerializer.

Vamos dar um exemplo para entender a desserialização em C# e usar o mesmo arquivo serializado que criamos anteriormente e o deseralizá -lo, abaixo está o código para ele:

usando o sistema;
usando o sistema.Io;
usando o sistema.Tempo de execução.Serialização;
usando o sistema.Tempo de execução.Serialização.JSON;
[Datacontract]
funcionário de classe pública

[DataMember]
Nome da String Public get; definir;
[DataMember]
public int id get; definir;
[DataMember]
public duplo salário get; definir;

programa de classe

estático void main (string [] args)

Serializador de datacrontractSerializer = new DatacontractSerializer (typeof (funcionário));
// Leia os dados serializados do arquivo usando o Filestream
string filename = "Data serializada.bin ";
string filepath = caminho.Combine (ambiente.CurrentDirectory, nome do arquivo);
Usando (filestreamreadstream = new FileStream (FilePath, Filemode.Abrir))

Funcionário desseserializedemp = (funcionário) serializador.ReadObject (readstream);
Console.WriteLine ($ "Funcionário Desserializado: Nome - DeserializedEMP.Nome, id - DeserializedEMP.Id, salário - DeserializedEMP.Salário");


O código C# acima usa o DataContractSerializer classe para desserializar um objeto 'funcionário' que foi serializado anteriormente e salvo em um arquivo binário. A classe de funcionários é definida com DataMember atributos em suas propriedades para indicar que estes devem ser serializados/desserializados. O principal cria uma instância do serializador e abre o arquivo binário usando uma transmissão fileStream e a função ReadObject () do serializador é então usada para ler os dados serializados e criar um novo objeto de funcionário. O objeto do funcionário é então impresso no console para confirmar que foi desserializado com sucesso.

Pensamentos finais

Na programação C#, serialização e Deserialização são conceitos vitais usados ​​para armazenamento e transmissão de dados. Serialização envolve transformar um objeto em um formato adequado para armazenamento ou transmissão, enquanto Deserialização envolve o processo reverso de converter os dados serializados de volta ao seu formulário original. No exemplo de código fornecido, o DataContractSerializer A classe é usada para serializar uma instância da classe de funcionários em uma matriz de bytes, que é salva em um arquivo. O Deserialização O processo envolve a leitura dos dados serializados do arquivo e o uso do mesmo serializador para desestimizá -los de volta em uma instância da classe de funcionários.