Contenitori: file composti
Questo articolo illustra i componenti e l'implementazione di file composti e i vantaggi e gli svantaggi dell'uso di file composti nelle applicazioni OLE.
I file composti sono parte integrante di OLE. Vengono usati per facilitare il trasferimento dei dati e l'archiviazione dei documenti OLE. I file composti sono un'implementazione del modello di archiviazione strutturata attiva. Esistono interfacce coerenti che supportano la serializzazione in un archivio, un flusso o un oggetto file. I file composti sono supportati nella libreria di classi Microsoft Foundation dalle classi COleStreamFile
e COleDocument
.
Nota
L'uso di un file composto non implica che le informazioni provenga da un documento OLE o da un documento composto. I file composti sono solo uno dei modi per archiviare documenti composti, documenti OLE e altri dati.
Componenti di un file composto
L'implementazione OLE di file composti usa tre tipi di oggetto: oggetti di flusso, oggetti di archiviazione e ILockBytes
oggetti. Questi oggetti sono simili ai componenti di un file system standard nei modi seguenti:
Gli oggetti di flusso, ad esempio i file, archiviano i dati di qualsiasi tipo.
Archiviazione oggetti, ad esempio directory, possono contenere altri oggetti di archiviazione e flusso.
LockBytes
gli oggetti rappresentano l'interfaccia tra gli oggetti di archiviazione e l'hardware fisico. Determinano il modo in cui i byte effettivi vengono scritti in qualsiasi dispositivo di archiviazione a cui accede l'oggettoLockBytes
, ad esempio un disco rigido o un'area di memoria globale. Per altre informazioni sugliLockBytes
oggetti e sull'interfacciaILockBytes
, vedere la guida di riferimento per programmatori OLE.
Vantaggi e svantaggi dei file composti
I file composti offrono vantaggi non disponibili con i metodi precedenti di archiviazione file. che includono:
Accesso incrementale ai file.
Modalità di accesso ai file.
Standardizzazione della struttura di file.
I potenziali svantaggi dei file composti, ovvero problemi di dimensioni elevate e prestazioni relativi all'archiviazione su dischi floppy, devono essere presi in considerazione quando si decide se usarli nell'applicazione.
Accesso incrementale ai file
L'accesso incrementale ai file è un vantaggio automatico dell'uso di file composti. Poiché un file composto può essere visualizzato come "file system all'interno di un file", è possibile accedere a singoli tipi di oggetto, ad esempio flusso o archiviazione, senza la necessità di caricare l'intero file. Ciò può ridurre notevolmente il tempo necessario a un'applicazione per accedere a nuovi oggetti per la modifica da parte dell'utente. L'aggiornamento incrementale, basato sullo stesso concetto, offre vantaggi simili. Anziché salvare l'intero file solo per salvare le modifiche apportate a un oggetto, OLE salva solo il flusso o l'oggetto di archiviazione modificato dall'utente.
Modalità di accesso ai file
La possibilità di determinare quando viene eseguito il commit delle modifiche agli oggetti in un file composto su disco è un altro vantaggio dell'uso di file composti. La modalità in cui si accede ai file, transazioni o dirette, determina quando viene eseguito il commit delle modifiche.
La modalità transazionale usa un'operazione di commit in due fasi per apportare modifiche agli oggetti in un file composto, mantenendo in tal modo le copie precedenti e le nuove copie del documento disponibili fino a quando l'utente non sceglie di salvare o annullare le modifiche.
La modalità diretta incorpora le modifiche al documento man mano che vengono apportate, senza la possibilità di annullarle in un secondo momento.
Per altre informazioni sulle modalità di accesso, vedere le informazioni di riferimento sul programmatore OLE.
Standardizzazione
La struttura standardizzata dei file composti consente alle diverse applicazioni OLE di esplorare i file composti creati dall'applicazione OLE senza alcuna conoscenza dell'applicazione che ha effettivamente creato il file.
Considerazioni sulle dimensioni e sulle prestazioni
A causa della complessità della struttura di archiviazione file composta e della possibilità di salvare i dati in modo incrementale, i file che usano questo formato tendono a essere più grandi di altri file usando l'archiviazione non strutturata o "file flat". Se l'applicazione carica e salva spesso i file, l'uso di file composti può comportare un aumento delle dimensioni del file molto più rapidamente rispetto ai file noncompound. Poiché i file composti possono ottenere grandi dimensioni, il tempo di accesso per i file archiviati e caricati dai dischi floppy può anche essere influenzato, con conseguente rallentamento dell'accesso ai file.
Un altro problema che influisce sulle prestazioni è la frammentazione di file composti. La dimensione di un file composto è determinata dalla differenza tra il primo e l'ultimo settore del disco utilizzato dal file. Un file frammentato può contenere molte aree di spazio libero che non contengono dati, ma vengono conteggiate durante il calcolo delle dimensioni. Durante la durata di un file composto, queste aree vengono create dall'inserimento o dall'eliminazione di oggetti di archiviazione.
Uso del formato di file composti per i dati
Dopo aver creato correttamente un'applicazione con una classe di documenti derivata da COleDocument
, assicurarsi che il costruttore del documento principale chiami EnableCompoundFile
. Quando la procedura guidata dell'applicazione crea applicazioni contenitore OLE, questa chiamata viene inserita automaticamente.
Nella guida di riferimento per programmatori OLE vedere IStream, I Archiviazione e ILockBytes.
Vedi anche
Contenitori
Contenitori: problemi dell'interfaccia utente
Classe COleStreamFile
Classe COleDocument