Compartilhar via


Serialização (Visual Basic)

Serialização é o processo de converter um objeto em um fluxo de bytes para armazenar o objeto ou transmiti-lo à memória, a um banco de dados ou a um arquivo. Sua principal finalidade é salvar o estado de um objeto para poder recriá-lo quando necessário. O processo inverso é chamado de desserialização.

Como a serialização funciona

Esta ilustração mostra o processo geral de serialização.

Gráfico de serialização

O objeto é serializado em um fluxo, que transporta não apenas os dados, mas informações sobre o tipo de objeto, como sua versão, cultura e nome do assembly. Nesse fluxo, ele pode ser armazenado em um banco de dados, um arquivo ou memória.

Usos de serialização

A serialização permite que o desenvolvedor salve o estado de um objeto e recrie-o conforme necessário, fornecendo armazenamento de objetos, bem como troca de dados. Por meio da serialização, um desenvolvedor pode executar ações como enviar o objeto para um aplicativo remoto por meio de um Serviço Web, passar um objeto de um domínio para outro, passar um objeto por meio de um firewall como uma cadeia de caracteres XML ou manter informações de segurança ou específicas do usuário entre aplicativos.

Serialização JSON

O System.Text.Json namespace contém classes para serialização e desserialização da JSON (JavaScript Object Notation). O JSON é um padrão aberto que normalmente é usado para compartilhar dados na Web.

A serialização JSON serializa as propriedades públicas de um objeto em uma cadeia de caracteres, matriz de bytes ou fluxo que está em conformidade com a especificação JSON RFC 8259. Para controlar a maneira como JsonSerializer serializa ou desserializa uma instância da classe, você pode usar uma ou mais das seguintes abordagens:

Serialização binária e XML

O System.Runtime.Serialization namespace contém classes para serialização e desserialização binária e XML.

Na serialização binária, todos os membros, mesmo aqueles que são somente leitura, são serializados, e o desempenho é aprimorado. A serialização XML fornece código mais legível, bem como maior flexibilidade de compartilhamento e uso de objetos para fins de interoperabilidade.

Aviso

A serialização binária com BinaryFormatter pode ser perigosa. Para obter mais informações, consulte o guia de segurança BinaryFormatter e o guia de migração BinaryFormatter.

Tornando um objeto serializável

Para serializar um objeto usando serialização binária ou XML, você precisa do objeto para serializar, um fluxo para conter o objeto serializado e um Formatter. System.Runtime.Serialization contém as classes necessárias para serializar e desserializar objetos.

Aplique o SerializableAttribute atributo a um tipo para indicar que instâncias desse tipo podem ser serializadas. Uma exceção de SerializationException será gerada se você tentar serializar, mas o tipo não tiver o atributo SerializableAttribute.

Se você não quiser que um campo dentro de sua classe seja serializável, aplique o NonSerializedAttribute atributo. Se um campo de um tipo serializável contiver um ponteiro, um identificador ou outra estrutura de dados específica de um determinado ambiente, e esse campo não puder ser reconstituído de forma significativa em um ambiente diferente, pode ser desejável torná-lo não serializável.

Se uma classe serializada contiver referências a objetos de outras classes marcadas SerializableAttribute, esses objetos também serão serializados.

Serialização binária

A serialização binária usa a codificação binária para produzir serialização compacta para usos como fluxos de rede baseados em soquete ou armazenamento.

Serialização XML

A serialização XML serializa os campos públicos e as propriedades de um objeto, ou os parâmetros e os valores retornados dos métodos, em um fluxo XML que está em conformidade com um documento XSD (linguagem de definição de esquema XML) específico. A serialização XML resulta em classes fortemente tipadas com propriedades e campos públicos que são convertidos em XML. System.Xml.Serialization contém as classes necessárias para serializar e desserializar XML.

Você pode aplicar atributos a classes e membros de classe para controlar a maneira como a XmlSerializer classe serializa ou desserializa uma instância da classe.

Serialização básica e personalizada

A serialização binária e XML pode ser executada de duas maneiras, básica e personalizada. A serialização básica usa o .NET para serializar automaticamente o objeto.

O único requisito na serialização básica é que o objeto tenha o SerializableAttribute atributo aplicado. Pode NonSerializedAttribute ser usado para impedir que campos específicos sejam serializados.

Quando você usa a serialização básica, o controle de versão de objetos pode criar problemas, nesse caso, a serialização personalizada pode ser preferível. A serialização básica é a maneira mais fácil de executar a serialização, mas não fornece muito controle sobre o processo.

Na serialização personalizada, você pode especificar exatamente quais objetos serão serializados e como ele será feito. A classe deve ser marcada SerializableAttribute e implementar a ISerializable interface. Se você quiser que seu objeto seja desserializado de maneira personalizada também, você deve usar um construtor personalizado.

Serialização de designer

A serialização de designer é um formulário especial de serialização que envolve o tipo de persistência do objeto geralmente associado a ferramentas de desenvolvimento. A serialização de designer é o processo de conversão de um grafo do objeto em um arquivo de origem que pode, posteriormente, ser usado para recuperar o grafo do objeto. Um arquivo de origem pode conter código, marcação ou até mesmo informações da tabela SQL.

Artigos relacionados

Como ler dados de objeto de um arquivo XML (Visual Basic)
Mostra como ler dados de objeto que foram gravados anteriormente em um arquivo XML usando a XmlSerializer classe.

Como gravar dados de objeto em um arquivo XML (Visual Basic)
Mostra como gravar o objeto de uma classe em um arquivo XML usando a XmlSerializer classe.