Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

COM Structured Storage ( по- разному , также известный как COM структурированное хранилище или OLE структурированных хранения ) является технология , разработанная компанией Microsoft в рамках своей ОС Windows операционной системы для хранения иерархических данных в одном файле. Строго говоря, термин структурированное хранилище относится к набору COM- интерфейсов, которые должна предоставлять соответствующая реализация, а не к конкретной реализации или конкретному файлу.формат (на самом деле реализация структурированного хранилища вообще не должна хранить свои данные в файле). Помимо предоставления иерархической структуры данных, структурированное хранилище может также обеспечивать ограниченную форму поддержки транзакций для доступа к данным. Microsoft предоставляет реализацию, которая поддерживает транзакции, а также ту, которая не поддерживает (называемая хранилищем в простом режиме , последняя реализация также ограничена другими способами, хотя работает лучше).

Структурированное хранение широко используются в Microsoft Office приложений, хотя новые версии (начиная с Office 2007 ) используют XMLOffice Open XML по умолчанию. Это также важная часть как COM, так и связанных с ним технологий связывания и встраивания объектов (OLE). Другие известные приложения структурированного хранения включают SQL Server , оболочку Windows и многие сторонние программы САПР .

Мотивация [ править ]

Структурированное хранилище устраняет некоторые трудности, присущие хранению нескольких объектов данных в одном файле. Одна трудность возникает, когда объект, сохраняющийся в файле, изменяется в размере из-за обновления. Если приложение, которое читает / записывает файл, ожидает, что объекты в файле останутся в определенном порядке, все, что следует за представлением этого объекта в файле, может потребоваться сдвинуть назад, чтобы освободить место, если объект растет, или вперед, чтобы заполнить пространство, оставшееся, если объект сжимается. Если файл большой, это может привести к дорогостоящей операции. Конечно, есть много возможных решений этой проблемы, но часто прикладной программист не хочет иметь дело с деталями низкого уровня, такими как форматы двоичных файлов.

Структурированное хранилище предоставляет абстракцию, известную как поток , представленный интерфейсом IStream. Поток концептуально очень похож на файл, а IStreamинтерфейс предоставляет методы для чтения и записи, аналогичные файловому вводу / выводу. В зависимости от реализации поток может находиться в памяти , в файле, в другом потоке и т. Д. Еще одна важная абстракция - это хранилище , представленное интерфейсом IStorage. Хранилище концептуально очень похоже на каталог в файловой системе . Хранилища могут содержать потоки, как и другие хранилища.

Если приложение желает сохранить несколько объектов данных в файле, один из способов сделать это - открыть IStorageфайл, представляющий содержимое этого файла, и сохранить каждый из объектов в одном IStream. Один из способов добиться последнего - использовать стандартный COM-интерфейс IPersistStream. OLE сильно зависит от этой модели для встраивания объектов в документы.

Форматировать [ редактировать ]

Реализация Microsoft использует формат файла, известный как составные файлы , и все широко распространенные реализации структурированного хранилища читают и записывают этот формат. Составные файлы используют структуру, подобную FAT, для представления хранилищ и потоков. Фрагменты файла, известные как секторы (они могут соответствовать или не соответствовать секторам базовой файловой системы), выделяются по мере необходимости для добавления новых потоков и увеличения размера существующих потоков. Если потоки удаляются или сжимаются, оставляя нераспределенные сектора, эти сектора можно повторно использовать для новых потоков.

Следующие приложения используют структурированное хранилище OLE (формат составного документа)

  • Документы Microsoft Office 97 - 2003 :
    • Документы Word (.DOC, .DOT)
    • Таблицы Excel (.XLS, .XLT)
    • Презентации PowerPoint (.PPT, .POT)
    • Файлы издателя (.PUB)
    • Файлы Visio (.VSD)
    • Файлы проекта (.MPP)
    • Файлы Microsoft PhotoDraw (.MIX)
    • Файлы Microsoft Outlook (.MSG)
  • Файлы установщика Windows (.MSI, .MSP, .MST)
  • Microsoft Picture It! / Файлы Microsoft Digital Image (.MIX)
  • RSS-каналы Internet Explorer загружают файлы платформы RSS Windows (.feed-ms)
  • Windows 7 StickyNotes (.SNT)
  • Файлы переходов Windows 7
  • Thumbs.db
  • Пакеты Microsoft SQL 2000 Server DTS
  • Autodesk Revit
  • Autodesk Inventor
  • FlashPix

Собственное структурированное хранилище [ править ]

Во время бета - тестирования фазы в Windows 2000 , она включала в себя функцию под названием Native Structured Storage ( NSS ) для хранения структурированных документов для хранения (например , бинарными Microsoft Office форматов и thumbs.dbфайлов Windows Explorer , использования в уменьшенных кэш) с каждым потоком , который составляет документ хранится в отдельном потоке данных NTFS . Он включает в себя служебные программы, которые автоматически разделяют потоки в обычном документе структурированного хранилища на потоки данных NTFS и наоборот. Однако эта функция была отменена после бета-версии 3 из-за несовместимости с другими компонентами ОС, и все файлы NSS автоматически конвертировались в формат единого потока данных. [1]

Реализации [ править ]

  • Для Microsoft .NET:
    • OpenMCDF - бесплатный компонент .NET для доступа к файлам структурированного хранилища OLE, лицензированный MPL.
  • Для Linux:
    • Библиотека структурированных файлов GNOME - может читать файлы структурированного хранилища Microsoft.
    • ПОЛЮС .
  • Кросс-платформенный C ++ для Window / MacOSX / Linux:
    • ПОЛЮС v3 и выше .
  • Для Java:
    • POIFS - Java-реализация формата составного документа OLE 2, часть Apache POI .
  • Для Perl:
    • Бинарные структуры LAOLA
  • Для JavaScript:
    • js-cfb - реализация JavaScript формата составного документа OLE 2.

Ссылки [ править ]

  1. ^ "Что такое собственное структурированное хранилище?" . Архивировано из оригинала на 2007-09-27 . Проверено 3 декабря 2007 .

Внешние ссылки [ править ]

  • Официальный сайт
  • Открытые спецификации: формат двоичного файла составного файла