Контейнеры. Составные файлы
В этой статье описываются компоненты и реализация составных файлов, а также преимущества и недостатки использования составных файлов в приложениях OLE.
Составные файлы являются неотъемлемой частью OLE. Они используются для упрощения передачи данных и хранения документов OLE. Составные файлы — это реализация модели активного структурированного хранилища. Согласованные интерфейсы существуют, поддерживающие сериализацию в хранилище, поток или объект файла. Составные файлы поддерживаются в библиотеке классов Microsoft Foundation классами COleStreamFile
и COleDocument
.
Примечание.
Использование составного файла не означает, что информация поступает из документа OLE или составного документа. Составные файлы — это всего лишь один из способов хранения составных документов, документов OLE и других данных.
Компоненты составного файла
Реализация OLE составных файлов использует три типа объектов: потоковые объекты, объекты хранилища и ILockBytes
объекты. Эти объекты похожи на компоненты стандартной файловой системы следующим образом:
Потоковая передача таких объектов, как файлы, хранение данных любого типа.
служба хранилища объекты, такие как каталоги, могут содержать другие объекты хранилища и потоковой передачи.
LockBytes
объекты представляют интерфейс между объектами хранилища и физическим оборудованием. Они определяют, как фактические байты записываются на любое устройствоLockBytes
хранения, к чему обращается объект, например жесткий диск или область глобальной памяти. Дополнительные сведения обLockBytes
объектах и интерфейсеILockBytes
см. в справочнике программиста OLE.
Преимущества и недостатки составных файлов
Составные файлы предоставляют преимущества, недоступные в более ранних методах хранения файлов. К ним относятся:
Добавочный доступ к файлам.
Режимы доступа к файлам.
Стандартизация структуры файлов.
Потенциальные недостатки составных файлов — большие проблемы с размером и производительностью, связанные с хранилищем на дисках floppy, следует учитывать при выборе того, следует ли использовать их в приложении.
Добавочный доступ к файлам
Добавочный доступ к файлам — это автоматическое преимущество использования составных файлов. Так как составной файл можно просматривать как "файловую систему в файле", отдельные типы объектов, такие как поток или хранилище, могут быть доступны без необходимости загружать весь файл. Это может значительно уменьшить время, необходимое приложению для доступа к новым объектам для редактирования пользователем. Добавочное обновление, основанное на той же концепции, предлагает аналогичные преимущества. Вместо сохранения всего файла только для сохранения изменений, внесенных в один объект, OLE сохраняет только объект потока или хранилища, редактируемый пользователем.
Режимы доступа к файлам
Возможность определить, когда изменения объектов в составном файле фиксируются на диске, является еще одним преимуществом использования составных файлов. Режим доступа к файлам ( транзакциям или прямым) определяет, когда изменения фиксируются.
В режиме transacted используется двухфазная операция фиксации для внесения изменений в объекты в составном файле, тем самым сохраняя как старые, так и новые копии документа, пока пользователь не решит сохранить или отменить изменения.
Прямой режим включает изменения в документ по мере их внесения без возможности их отмены.
Дополнительные сведения о режимах доступа см. в справочнике программиста OLE.
Стандартизация
Стандартизованная структура составных файлов позволяет различным приложениям OLE просматривать составные файлы, созданные приложением OLE без знаний о приложении, которое фактически создал файл.
Рекомендации по размеру и производительности
Из-за сложности составной структуры хранилища файлов и возможности постепенного сохранения данных файлы с использованием этого формата, как правило, больше, чем другие файлы, использующие неструктурированное или неструктурированное хранилище файлов. Если приложение часто загружает и сохраняет файлы, использование составных файлов может привести к увеличению размера файла гораздо быстрее, чем некомпундные файлы. Так как составные файлы могут получить большие объемы, время доступа к файлам, хранящимся и загруженным с дисков floppy, также может быть затронуто, что приводит к замедлению доступа к файлам.
Другая проблема, влияющая на производительность, — фрагментация составных файлов. Размер составного файла определяется разницей между секторами первого и последнего дисков, используемых файлом. Фрагментированные файлы могут содержать множество областей свободного пространства, которые не содержат данные, но учитываются при вычислении размера. В течение времени существования составного файла эти области создаются путем вставки или удаления объектов хранилища.
Использование формата составных файлов для данных
После успешного создания приложения, имеющего производный от класса COleDocument
документов, убедитесь, что основной конструктор документов вызывается EnableCompoundFile
. Когда мастер приложений создает приложения контейнеров OLE, этот вызов вставляется для вас.
В справочнике программиста OLE см. раздел IStream, I служба хранилища и ILockBytes.
См. также
Контейнеры
Контейнеры. Проблемы пользовательского интерфейса
Класс COleStreamFile
Класс COleDocument