Структурированное хранилище COM - COM Structured Storage
Эта статья поднимает множество проблем. Пожалуйста помоги Улучши это или обсудите эти вопросы на страница обсуждения. (Узнайте, как и когда удалить эти сообщения-шаблоны) (Узнайте, как и когда удалить этот шаблон сообщения)
|
Структурированное хранилище COM (также известный как COM структурированное хранилище или OLE структурированное хранилище) - это технология, разработанная Microsoft как часть его Windows Операционная система для хранения иерархических данных в одном файле. Строго говоря, термин структурированное хранилище относится к набору COM интерфейсы что соответствующая реализация должна обеспечивать, а не конкретную реализацию или конкретную файл формат (на самом деле реализация структурированного хранилища вообще не должна хранить свои данные в файле). Помимо предоставления иерархической структуры данных, структурированное хранилище может также предоставлять ограниченную форму транзакционный поддержка доступа к данным. Microsoft предоставляет реализацию, поддерживающую транзакции, а также реализацию, не поддерживающую (называемую Простой режим хранилище, последняя реализация ограничена и другими способами, хотя работает лучше).
Структурированное хранилище широко используется в Microsoft Office приложения, хотя и более новые выпуски (начиная с Office 2007 ) использовать XML -основан Office Open XML по умолчанию. Это также важная часть как COM, так и связанных с ним технологий связывания и встраивания объектов (OLE). Другие известные применения структурированного хранилища включают: SQL Server, оболочка Windows и многие сторонние CAD программы.
Мотивация
Структурированное хранилище устраняет некоторые трудности, присущие хранению нескольких объектов данных в одном файле. Одна трудность возникает, когда объект, сохраняющийся в файле, изменяется в размере из-за обновления. Если приложение, которое читает / записывает файл, ожидает, что объекты в файле останутся в определенном порядке, все, что следует за представлением этого объекта в файле, может потребоваться сдвинуть назад, чтобы освободить место, если объект растет, или вперед, чтобы заполнить пространство, оставшееся, если объект сжимается. Если файл большой, это может привести к дорогостоящей операции. Конечно, есть много возможных решений этой проблемы, но часто программист приложений не хочет иметь дело с деталями низкого уровня, такими как форматы двоичных файлов.
Структурированное хранилище предоставляет абстракцию, известную как транслировать, представленный интерфейсом IStream
. Поток концептуально очень похож на файл, и IStream
Интерфейс предоставляет методы для чтения и записи, аналогичные файловому вводу / выводу. Поток мог находиться в объем памяти, внутри файла, в другом потоке и т. д., в зависимости от реализации. Еще одна важная абстракция - это абстракция место хранения, представленный интерфейсом IStorage
. Хранилище концептуально очень похоже на каталог на файловая система. Хранилища могут содержать потоки, как и другие хранилища.
Если приложение хочет сохранить несколько объектов данных в файле, один из способов сделать это - открыть IStorage
который представляет содержимое этого файла и сохраняет каждый из объектов в одном IStream
. Один из способов добиться последнего - через стандартный COM-интерфейс. IPersistStream
. OLE сильно зависит от этой модели для встраивания объектов в документы.
Формат
Реализация Microsoft использует формат файла, известный как составные файлы, и все широко распространенные реализации структурированного хранилища читают и записывают этот формат. Составные файлы используют ТОЛСТЫЙ -подобная структура для представления хранилищ и потоков. Фрагменты файла, известные как сектора (они могут соответствовать или не соответствовать секторам базовой файловой системы), выделяются по мере необходимости для добавления новых потоков и увеличения размера существующих потоков. Если потоки удаляются или сжимаются, оставляя нераспределенные сектора, эти секторы можно повторно использовать для новых потоков.
Следующие приложения используют структурированное хранилище OLE (формат составного документа)
- Microsoft Office 97 –2003 документы:
- слово документы (.DOC, .DOT)
- Excel электронные таблицы (.XLS, .XLT)
- Силовая установка презентации (.PPT, .POT)
- Издатель файлы (.PUB)
- Visio файлы (.VSD)
- Проект файлы (.MPP)
- Microsoft PhotoDraw файлы (.MIX)
- Microsoft Outlook файлы (.MSG)
- Установщик Windows файлы (.MSI, .MSP, .MST)
- Microsoft Picture It! / Цифровое изображение Microsoft файлы (.MIX)
- RSS-каналы Internet Explorer Платформа Windows RSS файлы (.feed-ms)
- Windows 7 StickyNotes (.SNT)
- Файлы переходов Windows 7
- Thumbs.db
- Сервер Microsoft SQL 2000 DTS пакеты
- Autodesk Revit
- Autodesk Inventor
- FlashPix
Собственное структурированное хранилище
В течение бета-тестирование фаза Windows 2000, он включал функцию под названием Собственное структурированное хранилище (НСС) для хранения документов структурированного хранилища (например, двоичного Microsoft Office форматы и thumbs.db
файл проводник Виндоус используется для кеширования миниатюр) с каждым Транслировать который составляет документ, хранящийся в отдельном NTFS поток данных. Он включает в себя служебные программы, которые автоматически разделяют потоки в обычном документе структурированного хранилища на потоки данных NTFS и наоборот. Однако после бета-версии 3 эта функция была отменена из-за несовместимости с другими компонентами ОС, и все файлы NSS автоматически конвертировались в формат единого потока данных.[1]
Рекомендации
- ^ "Что такое собственное структурированное хранилище?". Архивировано из оригинал на 2007-09-27. Получено 2007-12-03.
внешняя ссылка
Реализации
- Для Microsoft .NET:
- OpenMCDF - Бесплатный компонент .NET для доступа к файлам структурированного хранилища OLE, лицензия MPL.
- Для Linux:
- Структурированная файловая библиотека GNOME - Может читать файлы структурированного хранилища Microsoft.
- СТОЛБ.
- Кросс-платформенный C ++ для Window / MacOSX / Linux:
- Для Java:
- POIFS - Реализация Java формата составного документа OLE 2, часть POI Apache.
- Для Perl:
- Для JavaScript:
- js-cfb - Реализация JavaScript формата составного документа OLE 2.