Noções Básicas de Serialização no .NET Framework
Serialização é o processo de converter um objeto em um fluxo de bytes, a fim de que ele persista na memória, num banco de dados, ou num 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.
Como a serialização funciona
Esta ilustração mostra o processo geral 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.
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 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 sequência XML, ou manter a segurança ou informações específicas de usuário entre aplicativos.
Tornando um objeto serializavel
Para serializar um objeto, é necessário que o objeto para ser serializado, um fluxo para conter o objeto serializado e um Formatter. System.Runtime.Serialization contém as classes necessárias para serialização e desserialização de 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.
Serializaçã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.Não é adequada para passar dados através de um firewall, mas fornece melhor desempenho quando armazena dados.
Serializaçã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 uma classes fortemente tipada com propriedades públicas e campos que são convertidos em XML.System.Xml.Serialization contém as classes necessárias para serialização e desserialização de 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.Para obter mais informações, consulte Controlando a serialização XML usando atributos e Atributos That Serialization XML Controlar.
Esta tabela lista as tarefas associadas à série XML:
Para |
Consulte |
---|---|
Serialize um objeto |
|
Desserialize um objeto |
|
Gerar classes e documentação do esquema XML |
Como: Use the Tool Definition Esquema XML to Generate Classes and Documentos Esquema XML |
Qualificar o elemento XML e nomes do atributo XML |
|
Especifique um nome alternativo para o elemento para um fluxo XML |
|
Controle a série de classes derivadas |
Serializaçã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.Para obter mais informações, consulte Serialization XML com Serviços Web XML e Os atributos que Controlar a serialização SOAP codificada.
Esta tabela lista as tarefas associadas à serialização XML codificado em SOAP-:
Para |
Consulte |
---|---|
Serialize um objeto como um fluxo de XML para ser codificado em SOAP |
Como: Serializar um objeto como um fluxo codificado SOAP XML |
Substituir a serialização XML codificada em SOAP |
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.
Serialização Básica
O único requisito na serialização básica é que o objeto tenha o atributo 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.
Serializaçã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.
Consulte também
Tarefas
How To: Chunk Serialized Dados