O que é um objeto CArchive
Um objeto CArchive
fornece um mecanismo de buffer fortemente tipado para gravar ou ler objetos serializáveis de ou para um objeto CFile
. Normalmente, o objeto CFile
representa um arquivo de disco; no entanto, ele também pode ser um arquivo de memória (objeto CSharedFile
), talvez representando a Área de Transferência.
Um determinado objeto CArchive
armazena (grava, serializa) dados ou carrega (lê, desserializa) dados, mas nunca ambos. A vida útil de um objeto CArchive
é limitada a uma passagem por meio da gravação de objetos em um arquivo ou à leitura de objetos de um arquivo. Assim, dois objetos CArchive
criados sucessivamente são necessários para serializar dados em um arquivo e, em seguida, desserializá-los de volta do arquivo.
Quando uma camada de arquivos armazena objetos em um arquivo, a camada de arquivos anexa o nome CRuntimeClass
aos objetos. Em seguida, quando outra camada de arquivos carrega objetos de um arquivo para a memória, os objetos derivados de CObject
são reconstruídos dinamicamente com base nos objetos CRuntimeClass
. Um determinado objeto pode ser referenciado mais de uma vez, pois ele é gravado no arquivo pelo arquivo de armazenamento. O arquivo de carregamento, no entanto, reconstruirá o objeto apenas uma vez. Os detalhes sobre como uma camada de arquivos anexa informações CRuntimeClass
a objetos e reconstrói objetos, levando em conta possíveis referências múltiplas, são descritos na Nota Técnica 2.
À medida que os dados são serializados para uma camada de arquivos, a camada de arquivos acumula os dados até que o buffer esteja cheio. Em seguida, a camada de arquivos grava o buffer no objeto CFile
apontado pelo objeto CArchive
. Da mesma forma, conforme você lê dados de uma camada de arquivos, ela lê os dados do arquivo no buffer e, em seguida, do buffer para o objeto desserializado. Esse armazenamento em buffer reduz o número de vezes em que um disco rígido é lido fisicamente, melhorando assim o desempenho do aplicativo.