Compartilhar via


Serialização no MFC

Este artigo explica o mecanismo de serialização fornecido na Biblioteca de Classes do Microsoft Foundation (MFC) para permitir que os objetos persistam entre as execuções do seu programa.

Serialização é o processo de gravar ou ler um objeto de ou para um meio de armazenamento persistente, como um arquivo de disco. A serialização é ideal para situações em que é desejado manter o estado dos dados estruturados (como classes ou estruturas C++) durante ou após a execução de um programa. O uso dos objetos de serialização fornecidos pelo MFC permite que isso ocorra de maneira padrão e consistente, aliviando o usuário da necessidade de executar operações de arquivo manualmente.

O MFC fornece suporte interno para serialização na classe CObject. Assim, todas as classes derivadas CObject podem aproveitar o protocolo de CObjectserialização.

A ideia básica da serialização é que um objeto deve ser capaz de gravar seu estado atual, geralmente indicado pelo valor de suas variáveis membro, no armazenamento persistente. Posteriormente, o objeto pode ser recriado lendo ou desserializando o estado do objeto do armazenamento. A serialização manipula todos os detalhes de ponteiros de objeto e referências circulares a objetos que são usados quando você serializa um objeto. Um ponto-chave é que o objeto em si é responsável por ler e escrever seu próprio estado. Portanto, para que uma classe seja serializável, ela deve implementar as operações básicas de serialização. Conforme mostrado no grupo serialização de artigos, é fácil adicionar essa funcionalidade a uma classe.

O MFC usa um objeto da CArchive classe como um intermediário entre o objeto a ser serializado e o meio de armazenamento. Esse objeto sempre está associado a um CFile objeto, do qual obtém as informações necessárias para serialização, incluindo o nome do arquivo e se a operação solicitada é uma leitura ou gravação. O objeto que executa uma operação de serialização pode usar o CArchive objeto sem levar em conta a natureza do meio de armazenamento.

Um CArchive objeto usa operadores de inserção (<<) e extração (>>) sobrecarregados para executar operações de gravação e leitura. Para obter mais informações, consulte Armazenando e carregando CObjects por meio de um arquivo morto no artigo Serialização: Serializando um objeto.

Observação

Não confunda a CArchive classe com classes iostream de uso geral, que são apenas para texto formatado. A CArchive classe é para objetos serializados em formato binário.

Se desejar, você pode ignorar a serialização MFC para criar seu próprio mecanismo para armazenamento de dados persistente. Você precisará substituir as funções de membro de classe que iniciam a serialização no comando do usuário. Consulte a discussão na Nota Técnica 22 dos comandos padrão ID_FILE_OPEN, ID_FILE_SAVE e ID_FILE_SAVE_AS.

Os artigos a seguir abordam as duas tarefas principais necessárias para serialização:

O artigo Serialização: Serialização versus Entrada/Saída do Banco de Dados descreve quando a serialização é uma técnica de entrada/saída apropriada em aplicativos de banco de dados.

Consulte também

Conceitos
Tópicos gerais do MFC
Classe CArchive
Classe CObject
Classe CDocument
Classe CFile