Compartilhar via


Contêineres: arquivos compostos

Este artigo explica os componentes e a implementação de arquivos compostos e as vantagens e desvantagens do uso de arquivos compostos em seus aplicativos OLE.

Os arquivos compostos são parte integrante do OLE. Eles são usados para facilitar a transferência de dados e o armazenamento de documentos OLE. Os arquivos compostos são uma implementação do modelo de armazenamento estruturado ativo. Existem interfaces consistentes que dão suporte à serialização para um armazenamento, um fluxo ou um objeto de arquivo. Na biblioteca Microsoft Foundation Class, os arquivos compostos são compatíveis com as classes COleStreamFile e COleDocument.

Observação

O uso de um arquivo composto não implica que as informações sejam provenientes de um documento OLE ou de um documento composto. Arquivos compostos são apenas uma das maneiras de armazenar documentos compostos, documentos OLE e outros dados.

Componentes de um arquivo composto

A implementação OLE de arquivos compostos usa três tipos de objeto: objetos de fluxo, objetos de armazenamento e objetos ILockBytes. Esses objetos são semelhantes aos componentes de um sistema de arquivos padrão das seguintes maneiras:

  • Objetos de fluxo, como arquivos, armazenam dados de qualquer tipo.

  • Objetos de armazenamento, como diretórios, podem conter outros objetos de armazenamento e de fluxo.

  • Os objetos LockBytes representam a interface entre os objetos de armazenamento e o hardware físico. Eles determinam como os bytes reais são gravados em qualquer dispositivo de armazenamento que o objeto LockBytes está acessando, como um disco rígido ou uma área de memória global. Para obter mais informações sobre objetos LockBytes e a interface ILockBytes, confira a Referência do programador OLE.

Vantagens e desvantagens de arquivos compostos

Os arquivos compostos fornecem benefícios não disponíveis nos métodos anteriores de armazenamento de arquivos. Elas incluem:

  • Acesso incremental a arquivos.

  • Modos de acesso a arquivos.

  • Padronização da estrutura de arquivos.

As desvantagens potenciais dos arquivos compostos – grandes problemas de desempenho e tamanho relacionados ao armazenamento em disquetes – devem ser consideradas ao decidir usá-los ou não em seu aplicativo.

Acesso incremental aos arquivos

O acesso incremental aos arquivos é um benefício automático do uso de arquivos compostos. Como um arquivo composto pode ser exibido como um "sistema de arquivos dentro de um arquivo", tipos de objeto individuais, como fluxo ou armazenamento, podem ser acessados sem a necessidade de carregar todo o arquivo. Isso pode diminuir drasticamente o tempo que um aplicativo precisa para acessar novos objetos para edição pelo usuário. A atualização incremental, com base no mesmo conceito, oferece benefícios semelhantes. Em vez de salvar todo o arquivo apenas para salvar as alterações feitas em um objeto, o OLE salva apenas o fluxo ou objeto de armazenamento editado pelo usuário.

Modos de acesso ao arquivo

Ser capaz de determinar quando as alterações em objetos em um arquivo composto são confirmadas no disco é outro benefício do uso de arquivos compostos. O modo pelo qual os arquivos são acessados, transacionado ou direto, determina quando as alterações são confirmadas.

  • O modo transacionado usa uma operação de confirmação em duas fases para fazer alterações em objetos em um arquivo composto, mantendo assim a cópia antiga e a nova do documento disponíveis até que o usuário opte por salvar ou desfazer as alterações.

  • O modo direto incorpora alterações ao documento conforme elas são feitas, sem a capacidade de desfazê-las posteriormente.

Para obter mais informações sobre modos de acesso, confira a Referência do Programador OLE.

Padronização

A estrutura padronizada de arquivos compostos permite que diferentes aplicativos OLE naveguem por arquivos compostos criados pelo aplicativo OLE sem conhecimento do aplicativo que realmente criou o arquivo.

Considerações sobre tamanho e desempenho

Devido à complexidade da estrutura de armazenamento de arquivos compostos e à capacidade de salvar dados incrementalmente, os arquivos que usam esse formato tendem a ser maiores do que outros arquivos usando armazenamento não estruturado ou de "arquivo simples". Se o aplicativo carregar e salvar arquivos com frequência, o uso de arquivos compostos poderá fazer com que o tamanho do arquivo aumente muito mais rapidamente do que ocorreria com arquivos não compostos. Como os arquivos compostos podem ficar grandes, o tempo de acesso para arquivos armazenados e carregados de disquetes também pode ser afetado, resultando em acesso mais lento aos arquivos.

Outro problema que afeta o desempenho é a fragmentação de arquivos compostos. O tamanho de um arquivo composto é determinado pela diferença entre o primeiro e o último setores de disco usados pelo arquivo. Um arquivo fragmentado pode conter muitas áreas de espaço livre que não contêm dados, mas são contabilizadas ao calcular o tamanho. Durante o tempo de vida de um arquivo composto, essas áreas são criadas pela inserção ou exclusão de objetos de armazenamento.

Usando o formato de arquivo composto para seus dados

Depois de criar com êxito um aplicativo que tenha uma classe de documento derivada de COleDocument, verifique se o construtor principal do documento chama EnableCompoundFile. Quando o assistente de aplicativo cria aplicativos de contêiner OLE, essa chamada é inserida para você.

Na Referência do Programador OLE, confira IStream, IStorage e ILockBytes.

Confira também

Contêineres
Contêineres: problemas da interface do usuário
Classe COleStreamFile
Classe COleDocument