Partilhar 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 armazenamento de documentos OLE. Os arquivos compostos são uma implementação do modelo de armazenamento estruturado ativo. Existem interfaces consistentes que suportam a serialização para um armazenamento, um fluxo ou um objeto de arquivo. Arquivos compostos são suportados na Microsoft Foundation Class Library pelas classes COleStreamFile e COleDocument.

Observação

Usar um arquivo composto não implica que as informações vêm de um documento OLE ou 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 ILockBytes objetos. 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 fluxo.

  • LockBytes Os objetos 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 LockBytes objeto está acessando, como um disco rígido ou uma área de memória global. Para obter mais informações sobre LockBytes objetos e a ILockBytes interface, consulte a referência do programador OLE.

Vantagens e desvantagens dos arquivos compostos

Arquivos compostos fornecem benefícios não disponíveis com métodos anteriores de armazenamento de arquivos. Entre eles contam-se:

  • Acesso incremental a ficheiros.

  • Modos de acesso a ficheiros.

  • Padronização da estrutura de arquivos.

As desvantagens potenciais dos arquivos compostos — problemas de tamanho grande e desempenho relacionados ao armazenamento em disquetes — devem ser consideradas ao decidir se devem ser usados em seu aplicativo.

Acesso incremental a arquivos

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

Modos de acesso a arquivos

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 como os arquivos são acedidos, seja de forma transacional ou direta, 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 as cópias antiga e nova do documento disponíveis até que o usuário escolha salvar ou desfazer as alterações.

  • O modo direto incorpora alterações no documento à medida que são feitas, sem a capacidade de desfazê-las posteriormente.

Para obter mais informações sobre modos de acesso, consulte a referência do programador OLE.

Normalização

A estrutura padronizada de arquivos compostos permite que diferentes aplicativos OLE naveguem por arquivos compostos criados pelo seu 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 composta e à capacidade de salvar dados incrementalmente, os arquivos que usam esse formato tendem a ser maiores do que outros arquivos que usam armazenamento não estruturado ou "arquivo simples". Se o seu aplicativo carrega e salva arquivos com frequência, o uso de arquivos compostos pode fazer com que o tamanho do arquivo aumente muito mais rapidamente do que os 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 setor de disco usado pelo arquivo. Um arquivo fragmentado pode conter muitas áreas de espaço livre que não contêm dados, mas são contadas 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 arquivos compostos para seus dados

Depois de criar com êxito um aplicativo que tenha uma classe de documento derivada de COleDocument, certifique-se de que o seu construtor de documento principal chame EnableCompoundFile. Quando o assistente de aplicações cria aplicações de contêiner OLE, essa chamada é automaticamente inserida para si.

Na referência do programador OLE, consulte IStream, IStorage e ILockBytes.

Ver também

Contentores
Contentores: Problemas User-Interface
COleStreamFile Classe
COleDocument Classe