Введение

Технология, разработанная Microsoft

Object Linking and Embedding (OLE) — это запатентованная технология, разработанная Microsoft, позволяющая встраивать и связывать документы и другие объекты. Для разработчиков она предоставила расширение OLE Control Extension (OCX) — способ разработки и использования пользовательских элементов интерфейса. На техническом уровне OLE-объект — это любой объект, реализующий интерфейс IOleObject, возможно, вместе с широким спектром других интерфейсов, в зависимости от потребностей объекта.

Обзор

OLE позволяет редактирующему приложению экспортировать часть документа в другое редактирующее приложение, а затем импортировать его с добавленным содержимым. Например, система верстки может отправлять текст в текстовый процессор или изображение в растровый редактор с использованием OLE. Основное преимущество OLE заключается в возможности добавления в документ данных различных типов из разных приложений, таких как текстовый редактор и редактор изображений. Это создает документ в двоичном формате составного файла и главный файл, на который документ делает ссылку. Изменения данных в главном файле немедленно отражаются в документе, ссылающемся на него. Это называется "связью" (в отличие от "встраивания"). OLE также используется для передачи данных между различными приложениями посредством операций перетаскивания и операций с буфером обмена.

ОЛЕ 1.0

OLE 1.0, выпущенный в 1990 году, был развитием оригинальной концепции динамического обмена данными (DDE), разработанной Microsoft для более ранних версий Windows. В то время как DDE ограничивался передачей небольших объемов данных между двумя запущенными приложениями, OLE позволял поддерживать активные связи между двумя документами или даже встраивать один тип документа в другой. OLE-серверы и клиенты взаимодействуют с системными библиотеками посредством виртуальных таблиц функций, или VTBL. VTBL состоит из структуры указателей на функции, которые системная библиотека может использовать для связи с сервером или клиентом. Серверные и клиентские библиотеки, первоначально были разработаны для обмена данными между собой посредством сообщений. OLE 1.0 впоследствии эволюционировал в архитектуру для программных компонентов, известную как Component Object Model (COM), а затем DCOM. При размещении объекта OLE в буфере обмена или его встраивании в документ сохраняется как визуальное представление в стандартных форматах Windows (например, растровое изображение или метафайл), так и лежащие в основе данные в собственном формате. Это позволяет приложениям отображать объект без загрузки приложения, использованного для его создания, а также редактировать объект при установке соответствующего приложения. Object Packager, компонент OLE, поставляемый вместе с Windows 3.1 до Windows XP, позволяет "упаковывать" объекты, не поддерживающие OLE, для последующего встраивания в OLE-клиент.

ООО 2.0

OLE 2.0 стала следующим этапом развития OLE, разделяя многие из тех же целей, что и версия 1.0, но была перереализована на основе COM вместо непосредственного использования VTBL. Новыми возможностями стали автоматизация OLE, перетаскивание, активация на месте и структурированное хранилище. Моникеры эволюционировали из имен объектов OLE 1 и обеспечили иерархическую систему именования объектов и ресурсов, аналогичную URL или URI, которые были изобретены независимо. В настоящее время Windows объединила эти две технологии, поддерживая тип моникера URL и схему URL-моникера.

Обычные элементы управления OLE

В 1994 году были представлены пользовательские элементы управления OLE, пришедшие на смену устаревшим элементам управления Visual Basic Extension. Вместо обновления последних, новая архитектура была построена на основе OLE. Любой контейнер, поддерживающий OLE 2.0, уже мог встраивать пользовательские элементы управления OLE, хотя эти элементы управления не могут обрабатывать события, если контейнер не поддерживает эту функцию. Пользовательские элементы управления OLE обычно распространяются в виде динамически подключаемых библиотек с расширением ocx. В 1996 году все интерфейсы для элементов управления (за исключением IUnknown) стали необязательными для уменьшения размера файлов и ускорения загрузки; эти элементы управления стали называть ActiveX Controls.

Технические детали

Объекты и контейнеры OLE реализованы на основе модели компонентных объектов; это объекты, способные реализовывать интерфейсы для экспорта своей функциональности. Интерфейс IOleObject является обязательным, но другие интерфейсы также могут потребоваться, если необходима функциональность, предоставляемая ими. Для лучшего понимания дальнейшего изложения необходимо уточнить некоторые термины. Статус отображения объекта определяет, является ли он прозрачным, непрозрачным или непрозрачным с заливкой, а также поддерживает ли он отрисовку с заданным видом. Сайт объекта – это объект, представляющий местоположение объекта в его контейнере. Контейнер поддерживает объект сайта для каждого содержащегося в нем объекта. Далее представлен список интерфейсов, сгруппированных по объекту, который обычно должен их реализовывать. Интерфейсы, обычно реализуемые объектом OLE, обычно вызываются контейнером OLE, и наоборот. Обратите внимание, что в этом списке отступы указывают на наследование интерфейсов. Все интерфейсы без отступов наследуются от IUnknown.

Соревнование

Технология OpenDoc пыталась конкурировать с OLE. Некоторые конкуренты Microsoft считали OpenDoc более надёжной и удобной в использовании; однако, у OpenDoc были известные недостатки. OpenDoc позволял пользователям просматривать и редактировать информацию в разных приложениях, напрямую конкурируя с проприетарным стандартом OLE от Microsoft. В 1993 году некоторые конкуренты Microsoft создали консорциум Component Integration Laboratories ("CIL") для разработки OpenDoc как открытого стандарта для межплатформенной связи и внедрения. Microsoft требовала совместимости с OLE как условия сертификации приложения на совместимость с Windows 95. Microsoft изначально заявила, что приложения, использующие OpenDoc, будут считаться совместимыми с OLE и получат сертификацию для Windows 95. Позже Microsoft изменила своё решение и заявила, что приложения, использующие OpenDoc, могут вообще не получить сертификацию. Microsoft задерживала публикацию спецификаций и отлаженных версий OLE до выпуска собственных конкурирующих приложений.

Совместимость

Использование OLE-объектов ограничивает совместимость, поскольку эти объекты не широко поддерживаются в программах для просмотра или редактирования файлов вне операционной системы Microsoft Windows (например, встраивание других файлов внутрь файла, таких как таблицы или диаграммы из табличного редактора в текстовый документ или файл презентации). Если программное обеспечение, способное работать с OLE-объектом, отсутствует, объект обычно заменяется картинкой (растровым изображением объекта) или не отображается вовсе.