Терминология OLE

Суть и содержание OLE

Технология OLE

Сервер COM

При обращении к серверу клиент COM передает ему идентификатор класса. Идентификатор класса (CLSID) – это GUID, который ссылается на подходящий объект COM.

Сервер COM создает специальный объект – фабрику классов (IClassFactory), который занимается непосредственно созданием и загрузкой (производством) экземпляра нужного объекта COM, выполняющего конкретные действия его интерфейса, указанные в запросе клиента COM.

Фабрика классов «выпускает» объект COM, реализующий один или несколько интерфейсов COM, а также экземпляр специального класса ComClass, который обеспечивает возможность обращения к объекту COM на основе интерфейсов COM.

Сервер COM может быть реализован тремя способами:

1. В виде библиотеки .DLL. При этом объект COM выполняется в адресном пространстве обратившегося к нему приложения.

2. В виде приложения .EXE, которое выполняется в собственном адресном пространстве, но на одной машине с клиентом COM.

3. В виде библиотеки .DLL или приложения .EXE, которые загружаются и работают на иной машине, нежели клиент COM (технология DCOM).

Подход, при котором разделение компонентов происходит на уровне самостоятельных приложений, получил название Object Linking and Embedding (OLE). Он был положен корпорацией Microsoft в основу связывания и внедрения объектов и сегодня OLE – это огромная и сложная технология, которая оказывает определяющее влияние на отдельные стили программирования.

В общем случае технология OLE предназначена для объединения инструментальных возможностей разных приложений независимо от их форматов данных, операционной среды, языка программирования и разработчика. Она поддерживает внедрение копии одного компонента в «контейнер» (в другой компонент), включение в компонент ссылки на другой компонент (связывание компонентов) и сохранение составных объектов (документов).

Однако связыванием и внедрением OLE занималась только при рождении своего названия. В настоящее время OLE разрослась и включает целую группу технологий: связывание, внедрение, перетаскивание (drag-and-drop), буфер обмена (clipboard), структурированную память, автоматизацию и др.

Все они базируются на программной технологии COM, которая в свою очередь, выстроена на основе концепции объектно-ориентированного системного обеспечения – Object Oriented System Software (OOSS).


Объект в технологии OLE – это информационный элемент, объединяемый методами OLE с другими данными. Такой объект – это не то же, что объект в ООП. Поэтому точнее его можно называть как OLE-объект. OLE-объектом может быть целый документ (файл), отдельный его фрагмент или даже отдельный символ.

Составной документ (compound document, документ OLE) – это документ, содержащий данные, созданные в разных приложениях, оснащенных OLE. Такой документ называется контейнером.

Клиент – это приложение, в котором создается составной документ. Для уточнения его можно называть «OLE-клиент».

Сервер (источник) – это приложение, из которого берется объект для составного документа. Для уточнения можно использовать название «OLE-сервер».

OLE-серверы и OLE-клиенты взаимодействуют с системными библиотеками (OLESVR.DLL и OLECLI.DLL соответственно) при помощи виртуальных функциональных таблиц (Virtual function Tables – VTBL). Эти таблицы представляют собой наборы указателей функций для организации взаимодействия с сервером или клиентом.

Включение объекта в составной документ бывает двух видов: связь и внедрение. Они отличаются способом, местом хранения и использования данных объекта.

Внедрение – это такой вид формирования составного документа, когда в него входит сам объект. Размеры составного документа увеличиваются на сумму размеров внедренных объектов. Составной документ можно переносить с компьютера на компьютер, не заботясь об источнике, из которого взяты объекты.

Внедрений объект содержит не только объединяемые данные, но и информацию о своем происхождении, в частности, о сервере, в котором он создавался. Данные для его визуального представления в контейнере. Щелчок на внедрённом объекте открывает его в приложении, в котором он был создан. В результате объект можно там редактировать. Редакция внедренного объекта изменяет его оригинал, и наоборот – изменения оригинала не сказываются на составном объекте.

Связь – включение в составной документ не объекта, а только ссылка на него. Сами данные продолжают находиться в сервере. Связывание мало увеличивает размер составного документа.

При связывании пользователь не может менять данные связываемого объекта, так как один экземпляр объекта может служить источником данных для множества составных документов.

Настраиваемые связи (adaptable links) – это связи при использовании которых объекты могут перемещаться вместе с составным документом.

Односторонняя связь (one-way link) регламентирует автоматическое обновление данных в клиенте при их изменении в сервере.

Двусторонняя связь (two-way link) – это связь при которой один сервер «делится» изменениями данных с сервером. Если, к примеру, данные в текстовом редакторе связаны с электронной таблицей, где на основании этих данных построена таблица, то при изменении исходных данных в текстовом редакторе они обновляются в электронной таблице.

Редактирование «по месту» (in-place activation) – это переход к работе в «родном приложении» приложении путем выполнения двойного щелчка на объекте в текущем приложении. Другими словами, если, к примеру, в документе текстового процессора внедрена часть электронной таблицы, то при двойном щелчке на ней меню текстового процессора заменяется на меню электронной таблицы. Закрытие этого окна автоматически возвращает пользователя в текстовый редактор.

Технология OLE использует архитектуру «толстого клиента», то есть предполагает использование сетевого компьютера с избыточными вычислительными ресурсами. Это означает, что тип файла либо программа, которую пытаются внедрить, должна присутствовать на машине пользователя. Например, если OLE оперирует электронными таблицами Excel, то программа Excel должна быть инсталлирована на используемом компьютере.