Partilhar 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 para a memória, um banco de dados ou um arquivo. Seu principal objetivo é salvar o estado de um objeto para poder recriá-lo quando necessário. O processo inverso é chamado de desserialização.

Como funciona a serialização

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

Gráfico de serialização

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

Usos para a serialização

A serialização permite que o desenvolvedor salve o estado de um objeto e o recrie, 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 um firewall como uma cadeia de caracteres XML ou manter a segurança ou informações específicas do usuário entre aplicativos.

Serialização JSON

O System.Text.Json namespace contém classes para serialização e desserialização JSON (JavaScript Object Notation). JSON é um padrão aberto que é comumente 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 é melhorado. A serialização XML fornece código mais legível, bem como maior flexibilidade de compartilhamento de objetos e uso para fins de interoperabilidade.

Advertência

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 Formatterarquivo . 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 SerializationException exceção será lançada se você tentar serializar, mas o tipo não tiver o SerializableAttribute atributo.

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 alguma outra estrutura de dados específica para um determinado ambiente, e o campo não puder ser reconstituído significativamente em um ambiente diferente, convém 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 codificação binária para produzir serialização compacta para usos como armazenamento ou fluxos de rede baseados em soquete.

Serialização XML

A serialização XML serializa os campos públicos e as propriedades de um objeto, ou os parâmetros e valores de retorno de métodos, em um fluxo XML que está em conformidade com um documento XSD (XML Schema Definition Language) específico. A serialização XML resulta em classes fortemente tipadas com propriedades públicas e campos 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 o XmlSerializer serializa ou desserializa uma instância da classe.

Serialização básica e personalizada

A serialização binária e XML pode ser realizada 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. O NonSerializedAttribute pode ser usado para impedir que campos específicos sejam serializados.

Ao usar a serialização básica, o versionamento de objetos pode criar problemas, caso contrário, 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 isso será feito. A classe deve ser marcada SerializableAttribute e implementar a ISerializable interface. Se você quiser que seu objeto seja desserializado de uma maneira personalizada também, você deve usar um construtor personalizado.

Serialização do Designer

A serialização do designer é uma forma especial de serialização que envolve o tipo de persistência de objeto geralmente associada às ferramentas de desenvolvimento. A serialização no designer é o processo de converter um grafo de objeto num ficheiro fonte que pode ser usado posteriormente para recuperar o grafo de objeto. Um arquivo de origem pode conter código, marcação ou até mesmo informações de 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.