Compartilhar via


Serialização (C# e Visual Basic)

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

Para exemplos de serialização, consulte Tópicos relacionados e exemplos posteriormente neste tópico.

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 a dados, mas informações sobre o tipo do objeto, como seu nome, versão, cultura, e assembly.Desse fluxo, ele pode ser armazenado em um banco de dados, em um arquivo, ou na memória.

ms233843.collapse_all(pt-br,VS.110).gifUsos para a Serialização

A serialização permite que o desenvolvedor salve o estado de um objeto e o recrie conforme necessário, fornecendo o armazenamento dos objetos, bem como intercâmbio de dados.Através da serialização, um desenvolvedor pode executar ações como enviar o objeto para um aplicativo remoto por meio de um serviço da Web, passando um objeto de um domínio para outro, passando um objeto através de um firewall como uma cadeia de caracteres XML, ou manter a segurança ou informações específicas de usuário entre aplicativos.

ms233843.collapse_all(pt-br,VS.110).gifTornando um objeto serializavel

Para serializar um objeto, você precisa o objeto serializáveis, um fluxo para conter o objeto serializado, e um Formatter.System.Runtime.Serialization contém as classes necessárias para serializar e desserializar objetos.

Aplicar o atributo SerializableAttribute para um tipo para indicar que instâncias deste tipo que podem ser serializadas.Uma exceção SerializationException será apresentada se você tenta serializar mas o tipo não tem o atributo SerializableAttribute.

Se você não desejar um campo em sua classe para ser serializável, aplique o atributo NonSerializedAttribute.Se um campo de um tipo que pode ser serializado contém um ponteiro, um manipulador, ou algumas outras estruturas de dados que sejam específicas para um determinado ambiente, e o campo não pode ser reconstituído com sentido em um ambiente diferente, então você pode querer torná-lo não-serializável.

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

Binário e Serialização em XML

Tanto serialização Binária ou XML podem ser usadas.Em serialização binária, todos os membros, mesmo aqueles que são somente leitura, são serializados, e o desempenho é aprimorado.Serialização XML fornece código mais legível, bem como maior flexibilidade de compartilhamento de objeto e uso para fins de interoperabilidade.

ms233843.collapse_all(pt-br,VS.110).gifSerialização em binário

A serialização em binário usa a codificação em binário para produzir uma serialização compacta para usos, como armazenamento ou fluxos com soquetes de rede.

ms233843.collapse_all(pt-br,VS.110).gifSerialização em XML

A serialização em XML serializa os campos públicos e as propriedades de um objeto, ou os parâmetros e retornar os valores de métodos, em um fluxo XML que está de acordo a linguagem de definição de esquema XML (XSD) 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 a membros de classe para controlar a maneira como o XmlSerializer serializa ou desserializa uma instância da classe.

ms233843.collapse_all(pt-br,VS.110).gifSerialização SOAP

A serialização XML pode ser usada para serializar objetos em fluxos XML que estão em conformidade com a especificação SOAP.O SOAP é um protocolo com base em XML, desenvolvido especificamente para transporte de chamadas de procedimento usando XML.Como a serialização regular em XML, atributos podem ser usadas para controlar as mensagens SOAP geradas por um Web Services XML.

Serialização Básica e Personalizada

A serialização pode ser realizada de duas maneiras: básica e personalizada.A serialização básica usa o .NET Framework para serializar automaticamente o objeto.

ms233843.collapse_all(pt-br,VS.110).gifSerialização Básica

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

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

ms233843.collapse_all(pt-br,VS.110).gifSerialização Personalizada

Na serialização personalizada, você pode especificar exatamente quais objetos vão ser serializados e como será efetuado.A classe SerializableAttribute deve ser marcada e implementar a interface ISerializable.

Se você desejar que o objeto seja desserializado de uma maneira personalizada, tudo bem, use um construtor personalizado.

O Designer de Serialização

O Designer de Serialização é um formulário especial de serialização que envolve o tipo de persistência do objeto geralmente associado a ferramentas de desenvolvimento.O Designer de Serialização é o processo de conversão de um objeto gráfico em um arquivo de origem que posteriormente pode ser usado para recuperar o objeto gráfico.Um arquivo de origem pode conter código, marcação, ou mesmo informações de uma tabela SQL.Para obter mais informações, consulte Designer Serialization Overview.

Tópicos relacionados e exemplos