OLE (связывание и внедрение объектов), OLE Automation.

Технология OLE (Object Linking and Embedding) или OLE-1 предполагает следующие возможности интеграции:

· перенос данных из одного приложения в другое через буфер обмена, с преобразованием исходного формата данных в формат приложения – приёмника (или в некоторый общеизвестный формат);

· вставка (внедрение) в приложение А объекта, порожденного приложением Б вместе со ссылкой на приложение – родитель (то есть Б), но без связи с исходным файлом данных;

· вставка (внедрение) в приложение А объекта, порожденного приложением Б вместе со ссылкой на приложение – родитель (то есть Б) и на исходный файл данных.

С целью создания OLE2 фирма Microsoft разработала и продолжает совершенствовать стандарт на описание объектов – COM. Современные информационные системы, основанные или совместимые с Windows, поддерживают разработанную фирмой Microsoft COM (component object model) – технологию. Расширение этой технологии для случая распределенных по сети объектов привело к созданию модели DCOM (Distributed COM).

Разработка COM-технологии стала возможной благодаря тому, что объектно-ориентированный подход превратился в стандарт для всех современных систем программирования. С появлением COM-технологии фирма Microsoft развила технологию OLE-1 до OLE-2. Технология OLE-2 дает возможность из программы на внутреннем языке (скрипт – языке), прикрепленной к документу приложения А, обратиться к объектам (их свойствам и методам) другого приложения – приложения Б.

Очевидно, что при таком способе интеграции приложение А получает весь спектр данных и методов их обработки, экспортируемый приложением Б. Заметим, что он может быть и весьма ограниченным и очень широким, по крайней мере, никого не должен удивлять факт отличия функциональности, предоставляемой по OLE, и функциональности, обеспечиваемой родительским приложением пользователю!

В отличие от прежнего способа связи между приложениями – протокола DDE – обмена сообщениями не стандартизованной формы, OLE-2 стал стандартным средством структуризации экспортируемых приложением данных и возможностей их обработки. Но остался по существу символьный формат обмена данными, а отсюда – низкая скорость доступа.

Поясним разные виды OLE.

Можно просто внедрять данные. В этом случае обычно данные преобразуются из одного формата в другой. Передача может осуществляться через некоторого посредника: буфер обмена, файл общедоступного формата (например, текстовый). Заметьте, что во втором случае, вообще говоря, данные преобразуются дважды: из формата приложения Б в текстовый файл, а затем из текстового файла в формат приложения А! С буфером обмена та же ситуация, т.к. в нем данные хранятся в некотором обобщенном формате. Потери при таком преобразовании практически неизбежны. Попробуйте перенести, например, оформленную цветами, шрифтами, границами, с объединенными ячейками и т.п. таблицу из MS Word в MS Excel, вы убедитесь в том, что потери достаточно существенны.

Второй недостаток – одна и та же информация хранится дважды, причем в двух видах, что ведет к лишней трате ресурсов. Изменение исходного фрагмента никак не отражается на файле со вставленным кусочком, то есть со временем возникает противоречивость данных! Еще важный недостаток этого метода – ограниченная возможность изменения вставленных данных, т.к. приложение А не обладает набором функций, реализованным в приложении Б. Так вы не можете в MS Word корректировать вставленный рисунок.

Можно вставить данные вместе с «кусочком» приложения. Эта операция OLE отличается от обычной операции копирования и вставки тем, что она передает приложению-клиенту и сведения об источнике. Это - название приложения-сервера, тип данных (страница, документ, …), имя, назначенное системой этим данным (если они не были извлечены из файла или не были сохранены в файле), название или координаты диапазона (если копируется только часть объекта), представление объекта в формате Windows Metafile (.WMF). Если объект не является рисунком, его представлением может быть значок того приложения, которое создало объект, для файловых объектов добавляются свойства.

При этом сохраняется возможность корректировать вставленные данные, используя «родное» приложение. Ограничение данного способа интегрирования состоит в требовании, чтобы оба приложения были установлены на компьютере. Возможны два варианта последнего метода интегрирования: а) связь устанавливается и с файлом-источником и с приложением-источником; б) связь устанавливается только с приложением-источником, а данные копируются. Очевидно, что во втором варианте изменения в файле-источнике не приведет к изменениям в файле-приёмнике.

Сравните внедрение объекта со связью с файлом-источником и без этой связи, ответив на следующие вопросы: 1) какой объем дисковой памяти требуется для хранения документов, 2) что происходит, если исходный файл (вставленный объект) изменен, 3) а если исходный файл переименован, удален, 4) как перенести документ со вставленным объектом на другой компьютер.

В настоящее время все большее развитие получает интеграция на уровне объектных моделей. Предполагается, что есть язык программирования, с помощью которого можно обратиться к объектной модели своего и любого другого приложения, изменять свойства, пользоваться методами. Такой язык часто называют скрипт-языком. Очевидно, что приложение должно уметь обрабатывать программу на скрипт-языке.