Понятие OLE объекта. Технология OLE-Automation
Появившаяся еще в ранних версиях Windows технология согласно которой приложения пакета MS Office могут взаимодействовать между собой и со многими другими прикладными программами путем выполнения операций импорта-экспорта данных, при которых данные одного файла-документа по определенным соглашениям пересылаются в другой файл-документ и при этом оба файла могут иметь одинаковый тип, но разный формат или могут принадлежать к разным классам документов произвела настоящий фурор в кругах пользователей. Тем более, что сама идея (обмен данными между приложениями и предоставление служб одного программного продукта другому) в те времена была просто революционной. Теперь какой-либо объект (например, файл мультимедиа), подготовленный сторонним приложением, может быть использован другим программным продуктом или даже внедрен в состав его документа.
Обмен данными между документами различных приложений в большинстве случаев осуществляется на основе технологии связывания и внедрения объектов (технологии OLE — Object Linking and Embedding).
Причем приложение- получатель услуг OLE не обязано знать, каким образом был создан внедренный в него объект, и уж тем более вникать в особенности его работы. Единственная обязанность приложения - иметь представление об элементарных методах современной версии OLE - OLE 2.0.
Понятие OLE
Для связывания документов разных приложений используется технология OLE (Object Linking and Embedding), что означает "связывание и встраивание объектов", разработанная корпорацией Майкрософт.
Наличие такого механизма позволяет перенести в выходной документ фрагмент или файл некоторого приложения. Выходной связанный документ приобретает при этом свойства составного документа, т. е. документа, имеющего встроенные или связанные объекты различных форматов, созданные другими приложениями. Эта технология обеспечивает совместную работу нескольких приложений при создании составного документа, позволяет перемещать и копировать объекты между приложениями, а также хранить объекты в отдельных файлах, связанных с документом, где этот объект используется.
Например, при подготовке текста в текстовом процессоре часто возникает необходимость размещения иллюстраций. Для этой цели графический файл рисунка может быть использован как объект для связывания или встраивания в текстовый документ.
Главное действующее лицо технологии OLE - OLE-объект (OLE object). Это совокупность данных, которые совместно используются несколькими приложениями. Объекты могут внедряться в документы (вспомните пункт меню Вставка - Объект текстового процессора Microsoft Word).
Документ, содержащий OLE-объекты, называют составным документом (compound document).
Приложение, отвечающее за составной документ, принято называть контейнером (OLE container). Оно имеет сложную структуру, так как умеет работать с “чужими” объектами. Приложение, создавшее объект, называется сервером (OLE server).
Обязательным условием для создания составного документа является поддержка технологии OLE и исходным приложением, и целевым приложением. При этом исходные приложения, их называют OLE-серверы, это приложения, которые позволяют только создавать объекты для использования другими приложениями. Последние называют OLE-клиентами или контейнерами, они имеют сложную структуру, так как позволяют внедрять и связывать «чужие» объекты в своих документах. Так графический редактор Paint является OLE-сервером, а текстовый редактор WordPad контейнером (OLE-клиентом). Поэтому составные документы создаются с его помощью и сохраняются в файлах WordPad (имеющих расширение DOC).
Как следует из названия технологии, объект OLE может быть связан (linked) или внедрен (embedded) в составной документ.
Контейнеры и серверы могут поддерживать два режима взаимодействия:
· встраивание (внедрение) объектов. Этот режим означает, что данные объекта будут храниться вместе с основным документом (например, внедренная таблица Excel будет сохранена в .doc – файле редактора Word).
· связывание объектов. В составном документе хранится только ссылка на объект, данные которого находятся в другом документе.
С помощью технологии связывания и внедрения объектов (OLE), реализованной в Microsoft Windows, можно копировать и размещать информацию из одного приложения в другое, сохраняя возможность редактирования ее в исходном приложении.
И при связывании, и при внедрении производится вставка информации из одного документа в другой. Далее, в обоих случаях редактирование объекта производится в документе приложения-приемника.
Одно из основных различий между объектами OLE, ассоциированными с 16- разрядными серверами OLE 1 и с 32- разрядными серверами OLE 2, заключается в способе их активизации. Когда активизируется объект, созданный для сервера OLE 1, запускается и получает фокус ввода приложение-сервер, а объект OLE появляется в нем в готовом для редактирования виде. Когда активизируется объект OLE 2, приложение-сервер OLE 2 становится активным неявно, "внутри" приложения-контейнера. Это называется активизацией по месту вставки (in-place activation), или визуальным редактированием (visual editing).
При активизации объекта OLE 2 меню и панели инструментов приложения- сервера заменяются или сливаются с соответствующими элементами приложения- клиента, а часть окна приложения-клиента, по сути, становится окном приложения- сервера.
Под внедрением объекта подразумевается сохранение в файле составного документа не только всей информации об объекте, но и о приложении, в котором он был создан. Это позволяет в дальнейшем редактировать объект с помощью этого приложения. Для перехода в режим редактирования на объекте в составном документе выполняют двойной щелчок. Это действие открывает создавшее объект приложение, причем возможны два варианта работы с ним, в зависимости от организации взаимодействия приложений:
приложение-сервер открывается в отдельном окне, и после редактирования объекта в меню Файл этого окна выбирают команду Выход и возврат для возврата к составному документу в приложении-клиенте;
· в окне приложения-клиента меню команд и панели инструментов заменяются меню и панелями приложения-сервера, и после редактирования объекта следует щелкнуть в любом другом месте документа для активизации приложения-клиента.
Эта технология позволяет внедрять в составной документ объекты самого различного типа, например, звуковые или видео. Конечно, они не могут быть воспроизведены средствами WordPad, поэтому в документе отображаются значком, двойной щелчок по которому активизирует просмотр объекта с помощью создавшего его приложения. Следует иметь в виду, что размеры файлов составных документов в этом случае оказываются очень большими, так как каждый из них содержит отдельную копию объекта. Редактирование одной из копий не окажет никакого воздействия на остальные, поэтому составные документы могут содержать разные варианты одного и того же исходного объекта.
Связывание объектов требует, чтобы они хранились в отдельных файлах. В составной документ в этом случае вставляется либо формула связи (имя файла и путь доступа к нему), которая лишь незначительно увеличит размер файла документа, либо такая же формула вместе с полной информацией об объекте. В первом случае при переносе файла составного документа на другой компьютер следует вместе с ним перенести и все файлы связанных объектов, во втором файл составного документа содержит всю информацию об объектах, поэтому при его переносе окажутся разорваны только связи с файлами объектов.
Связывание объектов позволяет редактировать объект независимо от составного документа. При загрузке составного документа со связями приложение-клиент запрашивает пользователя о необходимости их обновления. Если пользователь отвечает на запрос, то объект в составном документе загружается из файла заново, в противном случае составной документ отображает предыдущее состояние объекта. Отсюда становится ясно, что если в составном документе хранится только адрес файла объекта, то его загрузка каждый раз выполняется заново, а в случае отсутствия файла по адресу, хранящемуся в формуле связи, отображение объекта будет невозможно. В такой ситуации программа-клиент предлагает пользователю самому указать новое место нахождения файла. Это действие называется восстановлением связи.
Поскольку методы вставки внедренных и связных объектов имеют много общего, бывает трудно определить, является ли объект связанным или внедренным. В данной таблице приводится ряд различий этих объектов.
Связный объект | Внедренный объект |
При двойном щелчке для редактирования объекта всегда открывается отдельное окно программы. | При двойном щелчке на объектах меню Word заменяется на меню этих программ. |
Данные объекта копируются в окно исходной программы для редактирования. | Редактирование данных выполняется непосредственно в документе Word. |