Kontenery: pliki złożone

W tym artykule wyjaśniono składniki i implementację złożonych plików oraz zalety i wady używania plików złożonych w aplikacjach OLE.

Pliki złożone są integralną częścią OLE. Są one używane do ułatwienia transferu danych i przechowywania dokumentów OLE. Pliki złożone to implementacja aktywnego modelu magazynu ustrukturyzowanego. Istnieją spójne interfejsy, które obsługują serializacji do magazynu, strumienia lub obiektu pliku. Pliki złożone są obsługiwane w bibliotece klas programu Microsoft Foundation według klas COleStreamFile i COleDocument.

Uwaga

Użycie pliku złożonego nie oznacza, że informacje pochodzą z dokumentu OLE lub dokumentu złożonego. Pliki złożone to tylko jeden ze sposobów przechowywania złożonych dokumentów, dokumentów OLE i innych danych.

Składniki pliku złożonego

Implementacja OLE plików złożonych używa trzech typów obiektów: obiektów strumienia, obiektów magazynu i ILockBytes obiektów. Te obiekty są podobne do składników standardowego systemu plików w następujący sposób:

  • Obiekty strumieniowe, takie jak pliki, przechowują dane dowolnego typu.

  • Obiekty magazynu, takie jak katalogi, mogą zawierać inne obiekty magazynu i strumienia.

  • LockBytes obiekty reprezentują interfejs między obiektami magazynu a sprzętem fizycznym. Określają one, w jaki sposób rzeczywiste bajty są zapisywane na każdym urządzeniu LockBytes magazynowym, do którego uzyskuje się dostęp, na przykład na dysku twardym lub obszarze pamięci globalnej. Aby uzyskać więcej informacji na temat LockBytes obiektów i interfejsuILockBytes, zobacz Dokumentację programisty OLE.

Zalety i wady plików złożonych

Pliki złożone zapewniają korzyści niedostępne we wcześniejszych metodach przechowywania plików. Są to następujące wymagania:

  • Uzyskiwanie dostępu do pliku przyrostowego.

  • Tryby dostępu do plików.

  • Standaryzacja struktury plików.

Potencjalne wady złożonych plików — problemy z dużym rozmiarem i wydajnością związane z magazynem na dyskietkach — należy wziąć pod uwagę podczas podejmowania decyzji, czy ich używać w aplikacji.

Przyrostowy dostęp do plików

Przyrostowy dostęp do plików to automatyczna korzyść z używania plików złożonych. Ponieważ plik złożony może być postrzegany jako "system plików w pliku", dostęp do poszczególnych typów obiektów, takich jak strumień lub magazyn, można uzyskać dostęp bez konieczności ładowania całego pliku. Może to znacznie skrócić czas potrzebny aplikacji na dostęp do nowych obiektów do edycji przez użytkownika. Aktualizacja przyrostowa oparta na tej samej koncepcji oferuje podobne korzyści. Zamiast zapisywać cały plik tylko w celu zapisania zmian wprowadzonych w jednym obiekcie, obiekt OLE zapisuje tylko strumień lub obiekt magazynu edytowany przez użytkownika.

Tryby dostępu do plików

Możliwość określenia, kiedy zmiany w obiektach w pliku złożonym są zatwierdzane na dysku, jest kolejną zaletą korzystania z plików złożonych. Tryb, w którym uzyskiwany jest dostęp do plików , transakcji lub bezpośrednich, określa, kiedy zmiany są zatwierdzane.

  • Tryb transakcyjny używa operacji zatwierdzania dwufazowego w celu wprowadzania zmian w obiektach w pliku złożonym, dzięki czemu zarówno stare, jak i nowe kopie dokumentu są dostępne, dopóki użytkownik nie zdecyduje się zapisać lub cofnąć zmiany.

  • Tryb bezpośredni zawiera zmiany w dokumencie w miarę ich wprowadzania bez możliwości późniejszego cofnięcia.

Aby uzyskać więcej informacji na temat trybów dostępu, zobacz dokumentację programisty OLE.

Standaryzacji

Ustandaryzowana struktura plików złożonych umożliwia różnym aplikacjom OLE przeglądanie złożonych plików utworzonych przez aplikację OLE bez znajomości aplikacji, która faktycznie utworzyła plik.

Zagadnienia dotyczące rozmiaru i wydajności

Ze względu na złożoność złożonej struktury magazynu plików i możliwość przyrostowego zapisywania danych, pliki korzystające z tego formatu są zwykle większe niż inne pliki korzystające z magazynu nieustrukturyzowanego lub "prostego pliku". Jeśli aplikacja często ładuje i zapisuje pliki, użycie plików złożonych może spowodować zwiększenie rozmiaru pliku znacznie szybciej niż pliki niezgodne. Ze względu na to, że pliki złożone mogą być duże, czas dostępu do plików przechowywanych na dyskietce i ładowanych z dysków dyskietek może również mieć wpływ na wolniejszy dostęp do plików.

Innym problemem wpływającym na wydajność jest fragmentacja plików złożonych. Rozmiar pliku złożonego zależy od różnicy między pierwszymi i ostatnimi sektorami dysku używanymi przez plik. Fragmentowany plik może zawierać wiele obszarów wolnego miejsca, które nie zawierają danych, ale są liczone podczas obliczania rozmiaru. W okresie istnienia pliku złożonego te obszary są tworzone przez wstawienie lub usunięcie obiektów magazynu.

Używanie formatu plików złożonych dla danych

Po pomyślnym utworzeniu aplikacji, która ma klasę dokumentów pochodzącą z COleDocumentklasy , upewnij się, że główny konstruktor dokumentu wywołuje metodę EnableCompoundFile. Po utworzeniu aplikacji przez kreatora aplikacji aplikacje kontenera OLE to wywołanie zostanie wstawione.

W dokumentacji programisty OLE zobacz IStream, IStorage i ILockBytes.

Zobacz też

Kontenery
Kontenery: kwestie dotyczące interfejsu użytkownika
Klasa COleStreamFile
Klasa COleDocument