Container: Verbunddateien
In diesem Artikel werden die Komponenten und die Implementierung zusammengesetzter Dateien sowie die Vor- und Nachteile der Verwendung zusammengesetzter Dateien in Ihren OLE-Anwendungen erläutert.
Zusammengesetzte Dateien sind ein integraler Bestandteil von OLE. Sie werden verwendet, um die Datenübertragung und OLE-Dokumentspeicherung zu erleichtern. Verbunddateien sind eine Implementierung des aktiven strukturierten Speichermodells. Konsistente Schnittstellen sind vorhanden, die die Serialisierung in einen Speicher, einen Datenstrom oder ein Dateiobjekt unterstützen. Verbunddateien werden in der Microsoft Foundation Class Library von den Klassen COleStreamFile
und COleDocument
.
Hinweis
Die Verwendung einer zusammengesetzten Datei bedeutet nicht, dass die Informationen aus einem OLE-Dokument oder einem zusammengesetzten Dokument stammen. Zusammengesetzte Dateien sind nur eine der Möglichkeiten zum Speichern zusammengesetzter Dokumente, OLE-Dokumente und anderer Daten.
Komponenten einer Verbunddatei
Die OLE-Implementierung zusammengesetzter Dateien verwendet drei Objekttypen: Streamobjekte, Speicherobjekte und ILockBytes
Objekte. Diese Objekte ähneln den Komponenten eines Standarddateisystems auf folgende Weise:
Stream-Objekte, z. B. Dateien, speichern Daten eines beliebigen Typs.
Speicherobjekte, z. B. Verzeichnisse, können andere Speicher- und Datenstromobjekte enthalten.
LockBytes
Objekte stellen die Schnittstelle zwischen den Speicherobjekten und der physischen Hardware dar. Sie bestimmen, wie die tatsächlichen Bytes auf das Speichergerät geschrieben werden, auf das dasLockBytes
Objekt zugreift, z. B. eine Festplatte oder einen Bereich des globalen Speichers. Weitere Informationen zuLockBytes
Objekten und derILockBytes
Schnittstelle finden Sie in der OLE-Programmierreferenz.
Vor- und Nachteile von Verbunddateien
Zusammengesetzte Dateien bieten Vorteile, die bei früheren Methoden des Dateispeichers nicht verfügbar sind. Dazu gehören:
Inkrementeller Dateizugriff.
Dateizugriffsmodi.
Standardisierung der Dateistruktur.
Die potenziellen Nachteile von Verbunddateien – große Größe und Leistungsprobleme im Zusammenhang mit der Speicherung auf Disketten – sollten berücksichtigt werden, wenn Sie entscheiden, ob sie in Ihrer Anwendung verwendet werden sollen.
Inkrementeller Zugriff auf Dateien
Der inkrementelle Zugriff auf Dateien ist ein automatischer Vorteil der Verwendung zusammengesetzter Dateien. Da eine zusammengesetzte Datei als "Dateisystem innerhalb einer Datei" angezeigt werden kann, können einzelne Objekttypen, z. B. Datenstrom oder Speicher, ohne die gesamte Datei laden zu müssen. Dies kann die Zeit verringern, die eine Anwendung für den Zugriff auf neue Objekte für die Bearbeitung durch den Benutzer benötigt. Die inkrementelle Aktualisierung, basierend auf demselben Konzept, bietet ähnliche Vorteile. Anstatt die gesamte Datei nur zu speichern, um die an einem Objekt vorgenommenen Änderungen zu speichern, speichert OLE nur das vom Benutzer bearbeitete Datenstrom- oder Speicherobjekt.
Dateizugriffsmodi
Wenn Sie feststellen können, wann Änderungen an Objekten in einer Verbunddatei auf den Datenträger übernommen werden, ist ein weiterer Vorteil der Verwendung zusammengesetzter Dateien. Der Modus, in dem auf Dateien zugegriffen wird, entweder transaktionen oder direkt, bestimmt, wann Änderungen übernommen werden.
Der Transacted-Modus verwendet einen Zwei-Phasen-Commit-Vorgang, um Änderungen an Objekten in einer zusammengesetzten Datei vorzunehmen, wodurch sowohl die alte als auch die neuen Kopien des Dokuments verfügbar bleiben, bis der Benutzer die Änderungen speichert oder rückgängig macht.
Der direkte Modus enthält Änderungen an dem Dokument, sobald sie vorgenommen werden, ohne dass sie später rückgängig gemacht werden können.
Weitere Informationen zu Zugriffsmodi finden Sie in der OLE-Programmierreferenz.
Standardisierung
Mit der standardisierten Struktur von Verbunddateien können unterschiedliche OLE-Anwendungen zusammengesetzte Dateien durchsuchen, die von Ihrer OLE-Anwendung erstellt wurden, ohne wissen zu können, welche Anwendung die Datei tatsächlich erstellt hat.
Überlegungen zur Größe und Leistung
Aufgrund der Komplexität der zusammengesetzten Dateispeicherstruktur und der Möglichkeit, Daten inkrementell zu speichern, sind Dateien, die dieses Format verwenden, tendenziell größer als andere Dateien mit unstrukturiertem oder "flat file"-Speicher. Wenn Ihre Anwendung Dateien häufig lädt und speichert, kann die Verwendung zusammengesetzter Dateien dazu führen, dass die Dateigröße viel schneller zunimmt als nicht kompounde Dateien. Da zusammengesetzte Dateien groß werden können, kann auch die Zugriffszeit für Dateien, die auf Disketten gespeichert und geladen werden, beeinträchtigt werden, was zu einem langsameren Zugriff auf Dateien führt.
Ein weiteres Problem, das sich auf die Leistung auswirkt, ist die Fragmentierung zusammengesetzter Dateien. Die Größe einer zusammengesetzten Datei wird durch den Unterschied zwischen dem ersten und dem letzten Datenträgersektor bestimmt, der von der Datei verwendet wird. Eine fragmentierte Datei kann viele Bereiche des freien Speicherplatzes enthalten, die keine Daten enthalten, aber beim Berechnen der Größe gezählt werden. Während der Lebensdauer einer zusammengesetzten Datei werden diese Bereiche durch das Einfügen oder Löschen von Speicherobjekten erstellt.
Verwenden des Formats "Zusammengesetzte Dateien" für Ihre Daten
Stellen Sie nach dem erfolgreichen Erstellen einer Anwendung mit abgeleiteter Dokumentklasse COleDocument
sicher, dass ihr Standard Dokumentkonstruktor aufruftEnableCompoundFile
. Wenn der Anwendungs-Assistent OLE-Containeranwendungen erstellt, wird dieser Aufruf für Sie eingefügt.
Siehe "IStream", "IStorage" und "ILockBytes" in der OLE-Programmierreferenz.
Siehe auch
Container
Container: Probleme mit der Benutzeroberfläche
COleStreamFile-Klasse
COleDocument-Klasse