Delen via


Containers: Samengestelde bestanden

In dit artikel worden de onderdelen en implementatie van samengestelde bestanden en de voor- en nadelen van het gebruik van samengestelde bestanden in uw OLE-toepassingen uitgelegd.

Samengestelde bestanden vormen een integraal onderdeel van OLE. Ze worden gebruikt om gegevensoverdracht en OLE-documentopslag te vergemakkelijken. Samengestelde bestanden zijn een implementatie van het actieve gestructureerde opslagmodel. Er bestaan consistente interfaces die ondersteuning bieden voor serialisatie naar een opslag, een stroom of een bestandsobject. Samengestelde bestanden worden ondersteund in de Microsoft Foundation Class Library door de klassen COleStreamFile en COleDocument.

Opmerking

Het gebruik van een samengesteld bestand impliceert niet dat de informatie afkomstig is van een OLE-document of een samengesteld document. Samengestelde bestanden zijn slechts een van de manieren om samengestelde documenten, OLE-documenten en andere gegevens op te slaan.

Onderdelen van een samengesteld bestand

De OLE-implementatie van samengestelde bestanden maakt gebruik van drie objecttypen: objecten streamen, opslagobjecten en ILockBytes objecten. Deze objecten zijn vergelijkbaar met de onderdelen van een standaardbestandssysteem op de volgende manieren:

  • Stream-objecten, zoals bestanden, slaan gegevens van elk type op.

  • Opslagobjecten, zoals mappen, kunnen andere opslag- en streamobjecten bevatten.

  • LockBytes objecten vertegenwoordigen de interface tussen de opslagobjecten en de fysieke hardware. Ze bepalen hoe de werkelijke bytes naar elk opslagapparaat worden geschreven dat het LockBytes object opent, zoals een harde schijf of een gebied met globaal geheugen. Zie de LockBytes voor meer informatie over ILockBytes objecten en de interface.

Voordelen en nadelen van samengestelde bestanden

Samengestelde bestanden bieden voordelen die niet beschikbaar zijn bij eerdere methoden voor bestandsopslag. Deze omvatten:

  • Incrementeel toegang tot bestanden.

  • Bestandstoegangsmodi.

  • Standaardisatie van de bestandsstructuur.

De mogelijke nadelen van samengestelde bestanden , grote grootte en prestatieproblemen met betrekking tot opslag op diskettes, moeten worden overwogen bij het bepalen of ze in uw toepassing moeten worden gebruikt.

Incrementele toegang tot bestanden

Incrementele toegang tot bestanden is een automatisch voordeel van het gebruik van samengestelde bestanden. Omdat een samengesteld bestand kan worden weergegeven als een 'bestandssysteem binnen een bestand', kunnen afzonderlijke objecttypen, zoals stream of opslag, worden geopend zonder dat het hele bestand hoeft te worden geladen. Hierdoor kan de tijd die een toepassing nodig heeft voor toegang tot nieuwe objecten aanzienlijk verminderen voor bewerking door de gebruiker. Incrementeel bijwerken, op basis van hetzelfde concept, biedt vergelijkbare voordelen. In plaats van het hele bestand op te slaan om de wijzigingen in één object op te slaan, slaat OLE alleen de stroom of het opslagobject op dat door de gebruiker is bewerkt.

Bestandstoegangsmodi

Als u kunt bepalen wanneer wijzigingen in objecten in een samengesteld bestand worden doorgevoerd op schijf, is een ander voordeel van het gebruik van samengestelde bestanden. De modus waarin bestanden worden geopend, ofwel transacted of direct, bepaalt wanneer wijzigingen worden doorgevoerd.

  • De transacted-modus maakt gebruik van een doorvoerbewerking in twee fasen om wijzigingen aan te brengen in objecten in een samengesteld bestand, waardoor zowel de oude als de nieuwe kopieën van het document beschikbaar blijven totdat de gebruiker ervoor kiest de wijzigingen op te slaan of ongedaan te maken.

  • In de directe modus worden wijzigingen in het document opgenomen terwijl ze worden aangebracht, zonder dat u ze later ongedaan kunt maken.

Zie de naslaginformatie voor OLE-programmeurs voor meer informatie over toegangsmodi.

Normalisatie

Met de gestandaardiseerde structuur van samengestelde bestanden kunnen verschillende OLE-toepassingen door samengestelde bestanden bladeren die zijn gemaakt door uw OLE-toepassing zonder kennis van de toepassing die het bestand daadwerkelijk heeft gemaakt.

Overwegingen voor grootte en prestaties

Vanwege de complexiteit van de samengestelde bestandsopslagstructuur en de mogelijkheid om gegevens incrementeel op te slaan, zijn bestanden met deze indeling meestal groter dan andere bestanden die gebruikmaken van ongestructureerde of platte bestandsopslag. Als uw toepassing regelmatig bestanden laadt en opslaat, kan het gebruik van samengestelde bestanden ertoe leiden dat de bestandsgrootte veel sneller toeneemt dan niet-compatibele bestanden. Omdat samengestelde bestanden groot kunnen worden, kan de toegangstijd voor bestanden die zijn opgeslagen en geladen vanaf diskettes, ook worden beïnvloed, wat resulteert in tragere toegang tot bestanden.

Een ander probleem dat van invloed is op de prestaties, is fragmentatie van samengestelde bestanden. De grootte van een samengesteld bestand wordt bepaald door het verschil tussen de eerste en laatste schijfsectoren die door het bestand worden gebruikt. Een gefragmenteerd bestand kan veel gebieden met vrije ruimte bevatten die geen gegevens bevatten, maar worden meegeteld bij het berekenen van de grootte. Tijdens de levensduur van een samengesteld bestand worden deze gebieden gemaakt door het invoegen of verwijderen van opslagobjecten.

Samengestelde bestandsindeling voor uw gegevens gebruiken

Nadat u een toepassing hebt gemaakt die een documentklasse heeft afgeleid van COleDocument, moet u ervoor zorgen dat de hoofddocumentconstructor aanroept EnableCompoundFile. Wanneer de toepassingswizard OLE-containertoepassingen maakt, wordt deze aanroep voor u ingevoegd.

Zie IStream, IStorage en ILockBytes in de naslaginformatie voor OLE-programmeurs.

Zie ook

Containers
Containers: problemen met User-Interface
COleStreamFile-klasse
COleDocument-klasse