1.2. Анализ механизма связывания и внедрения


Научно-технический прогресс 90-х годов обусловил неук­лонный рост популярности объектно-ориентированного програм­мирова­ния (ООП), и в настоящее время многие программисты перешли в своей работе на С++ или Visual Basic. Уже существуют объектно-ориентированные базы данных, объектно-ориентирован­ные дизайн и анализ и даже объектно-ориентированный СОВОL. На естественно воз­никающий вопрос - не остались ли Windows или операционные системы в объ­ектно-ориентированном отноше­нии далеко позади. Безус­ловно, нет. Продукт OLE ( Objekt Linking and Embedding ) компании Microsoft откры­вает новые пути для при­менения объектов в Windows. ОLE предполагает новый способ мышления. Про­граммист в среде ОПП должен мыслить обо всем как об объектах - от файла на диске, эле­мента данных или прило­жения до аппаратного обеспечения и операционной сис­темы. Кроме того, OLE заставляет программиста следовать строгому на­бору правил, на за­висящих от языка программирования, операци­онной системы или даже от аппарат­ной платформы.

Введение в OLE. OLE служит основанием, на котором строятся объекты. Эта аббре­виатура означала изначально связывание и внедрение объек­тов (Objekt Linking and Embedding) с выпуском версии ОLE 2 приме­нение ОLE уже не укладыва­ется в рамках, связывания и внедрения. ОLЕ сегодня включает в себя унифициро­ванную передачу данных, структурированное хранилище информации и автоматиза­цию. Не следует сужать представление об ОLЕ связыванием и внедрением; смотреть на ОLЕ следует как на набор строительных блоков, позво­ляющих создавать сложные приложения. На самом деле Microsoft перестала расшифровывать аббревиатуру ОLE как Objekt Linking and Embedding, чтобы изменить сложившееся восприятие ОLЕ.) / 2 /

Предназначение и история ОLЕ. Если до появления OLE 1 у пользователя Windows имелась элек­тронная таблица, которую ему нужно было вставить в документ текстового редактора, обыкновенно он должен был экспортировать данные из таблицы в файл стандартного формата, импортировать данные из файла в текстовый редактор, а затем в редакторе их пере­форматировать. Если пользователю везло и оба приложения под­держивали копирование и вставку, то вместо явного экс­порта/импорта он мог копировать информацию через буфер Clip­board. Всякий раз, когда электронные таблицы изменялись, процесс переноса данных нужно было повторять. Это, естественно, приво­дило к лишней затрате времени и сил.

Но незадолго до выхода Windows 3.1 появилось ОLE 1, и это значи­тельно упростило описанную использования общих данных в по­добных приложениях (если они умели работать с ОLЕ). На смену операциям экс­порта/импорта и копирования пришли связывание и внедрение. Стало возможным так подключить электронную таблицу к текстовому редактору, чтобы документ редактора отражал самые последние изменения, произошедшие в электронной таблице. Кроме того, электронная таблица (которая появилась в текстовом доку­менте) может быть выбрана нажатием кнопки мыши. При этом ав­томатически запускается приложение электронной таблицы, позво­ляющее выполнять редактирование данных или другие специфиче­ские для таблиц операции. Команда Update закрывает электронную таблицу, и обновленная электронная таблица внедряется в документ текстового процессора.

OLE 2 является следующим логическим шагом в развитии этой стра­тегии. В ОLE 1 нажатие кнопки на электронной таблице, находящейся в документе текстового документа, приводило к за­пуску приложения в отдельном окне. В ОLЕ 2 вводится понятие ак­тивации по месту (также известное под названием визуального ре­дактирования). Приложение электронной таблицы запускается как и прежде, но вместо отдельного окна электронная таблица как бы сливается с тек­стовым редактором. Изменяется меню, отражая меню электронной таблицы. Из­меняется даже инструментальные линейки, но вы все равно находитесь в текстовом редакторе. Два приложения как бы соединяются и текстовый редактор приобретает функциональные возможности электронной таблицы. Так пользова­телю нужды переключаться для просмотра данных с одного прило­жения на другое; вы можете ра­ботать с приложением, которое удовлетворяет большинству ваших потребностей, и внутри него использовать возможности других приложений.

Для ОLE 2 пришлось переделать заново многое из существо­вавшего в ОLE 1 чтобы расширить его функции и улучшить произ­водительность. Напри­мер, ОLЕ 1 построено на динамическом об­мене данными (DDЕ). Для передачи информа­ции туда и обратно DDE в своей основе использует сообщения Windows и возврат­ные вызовы. Поскольку используются сообщения Windows, DDЕ огра­ничивается рам­ками одной машины. OLE2 не опирается на DDE вместо этого оно построено на протоколе LPRC (Lightweight Remote Procedure Calls - легких удаленных процедурных вы­зовах).

Архитектура ОLЕ. Чтобы достигнуть своих задуманных функциональных воз­можностей, ОLE в качестве строительных блоков использует боль­шое количество объектов. OLE содержит новые объекты для реали­зации таких концепций, как формировка (marshaling), которая об­служивает коммуникацию между процес­сами и опирается на LPRC; структурированное хранилище, которое обес­печивает хранение до­кументов, содержащих другие документы; ярлык (moniker), управ­ляющий подключением и переключением связанных данных. Каж­дый из этих механизмов необходим ОLE для выполнения своей ра­боты. Кроме того, ОLE вводит понятие автоматизации, которое не требуется для связывания и внедрения в традиционном смысле. Ав­томатизацию можно понимать как способ, посредст­вом которого пользователь может работать с вашим приложением внутри опреде­ленного им самим макроязыка. Сервер-автомат OLЕ управляется любым автомат­ным контроллером OLE (см. таблицу).


Приложения-автоматы - серверы и контроллеры.

Продукт Автоматный сервер Автоматный контроллер

Visual Basic

да да

Exel

да да

Word 6.0

да нет

AutoCad 12LT

да нет

PhotoShop 3.0

да нет

CorelDraw 5.0

да нет

Приложения которые одновременно являются и серверами и контроллерами могут как управляться из вне, так и управлять дру­гими приложениями. В традиционном программировании приложе­ние либо сервер, либо контроллер, но не одновременно и то и дру­гое. OLE вынуждает расстаться с таким способом мышления и пре­доставляет разработчику приложения право выбора - будет ли его приложение сервером или контроллером.

Объекты. Под понятие о6ьекта ОLЕ попадает все, что может иметь ма­шинное представление. Объектом может быть документ текстового процессора, рисунок или чертеж, также часть чертежа (допустим какой либо слой чертежа печатной платы), видео-клип, звук или даже приложение. Та­кое понимание расходится со стандартной ин­терпретацией, в которой объекты - дан­ные, над которыми произво­дятся манипуляции посредством функций и процедур. Хотя OLE поддерживает объекты только в рамках одной машины, это не огра­ничение архитектуры OLE, а лишь ограниченность ее реализации. Уже демонст­рировалась версия OLE, названная распределенным ОLЕ, в которой границы ме­жду машинами для объектов про­зрачны. Другими словами, если ваше приложение запра­шивает OLE-объект, то поставщик этого объекта не обязательно находится на вашей машине, хотя с точки зрения вашего приложения ОLE -объ­ект - локальный.

Интерфейсы. OLЕ интерфейс - это механизм, используемый для доступа к группе связанных с объектом функций. Если вы хотите выполнить в OLE операцию над объектом, можно запросить специфический ин­терфейс, имеющий нужную вам функцию. Когда вы запрашиваете интерфейс, то обращаетесь к объекту, указывая его ID-номер. Каж­дый интерфейс имеет уникальный номер-идентификатор (Interface ID или IID). Объект возвращает либо состояние ошибки, если объект не поддерживает запрашиваемый интерфейс или происходит другая ошибка, либо он возвращает указа­тель на требуемый интерфейс.

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

Структурированное хранилище. Структурированное хранилище - это спецификация, опреде­ляющая метод хранения объектов. Структурированное хранилище можно представить себе как OLE-аналог DOS. Этот механизм под­держивает большинство из функций DOS - файлы и каталоги, ко­пирование и перемещение файлов (файлы называются потоками, а ката­логи - хранилищами. Кроме того, термин “структурированное хранилище” информации не подразумевает, что данные хранятся на диске. Так же как и файлы DOS, которые могут находится на RAM-диске, жестком диске, флоппи-диске или даже на CD-ROM, объ­екты, размещенные в структурированном хранилище, могут нахо­диться в любом из этих мест, а также и в других. Чтобы DOS могла использовать для хранения информации другие устройства, такие, как оптический флоппи-диск или се­тевой диск, обычно нужен драй­вер устройства. Структурированное хранилище инфор­мации также имеет методы для поддержки нестандартных устройств.

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

Автоматизация. OLE-автоматизация - это надзор интерфейсов, в типичном слу­чае псзволяющий использовать приложение в качестве ОLЕ объ­екта. Автоматизация возможна не только для приложений в форме исполняемых модулей (ЕХЕ), но и для динамически присоединяе­мых библиотек (DLL). Автоматизация позволяет посредст­вом на­бора определенных правил извне запрограммировать или специали­зировать приложение. Это дает приложению, например, Visual Basic, возможность управлять Exel, в результате чего функции Ехсеl ста­новятся доступны вашему приложению на Visual Basic. Автоматный контроллер OLE управляет объектами-автоматами через посредство автоматного сервера.

Унифицированная передача данных. Унифицированная передача данных - это набор интерфейсов, которые позволяют клиенту и серверу обмениваться данными. Она является DDE-эквивалентом и функций буфера cut/сору/paste, соб­ранных воедино. Унифици­рованная передача данных посылает уве­домление в случай если данные изменяются (подобно связи DDE), а также поддерживает переговоры о формате, в котором данные бу­дут передаваться. Кроме того, унифицированная передача данных предусматри­вает возможность передачи одного лишь дескриптора (handle) данных вместо самих данных. Объект-сервер может ре­шить, что вместо передачи 20 Мбайт данных в оперативную память через буфер обмена объекту-клиенту будет передан дескриптор дан­ных, чтобы клиент сам мог их получить. Это избавляет сервер от необходимости чтения всех данных и передачи их клиенту, а кли­ента от необходимости самостоятельной обработки данных. Это также избавляет конечного пользователя от сидения перед экраном компьютера в ожидании окончания обмена.

Связывание и внедрение (Linking and Embedding). Связывание и внедрение - два принципа, которые по тради­ции известны в OLE (Objekt Linking and Embedding) лучше всего. Связы­вание и внедрение (вместо этого теперь говорят просто о докумен­тах ОLЕ) позволяют объекту-клиенту (который может быть другим приложением) прикрепиться к объекту-серверу. Присоединение может либо осуществляться связыванием (данные находятся вне со­ставного документа), либо данные могут внедряться внутрь со­ставного документа. Вне­дренные данные сохраняются непосредст­венно в документе, в то время как при связыва­нии для доступа к данным OLE в действительности сохраняет своего рода до­рожную карту. Дорожной карта называется ярлыком (moniker). Когда ОLЕ получает за­прос на восстановления данных, оно смотрит на ярлык (дорожную карту), чтобы их отыскать. Связанные данные могут храниться в не принадлежащем ОLЕ файле или в структурирован­ном хранилище (возможно даже, что данные находятся где-то в са­мом составном документе).

Составной частью связывания и внедрения является способ­ность OLE выполнять активацию по месту. В OLE 1 при двойном нажатии кнопки мыши над связанным или внедренным объектом запускается сервер этого объекта. В ОLЕ 2 возможна активация по месту. Для пользователя два приложения являются как бы одним. Активация по месту присое­диняет нужные части приложения сер­вера (такие, как пункты меню и инструмен­тальные линейки) к при­ложению клиента, когда пользователь работает с внедренным объ­ектом. При двойном нажатии кнопкой мыши над внедренным объ­ектом происходит преобразование приложения клиента, в нем изме­няются меню и линейки инструментов, а также прочие элементы интерфейса, для работы с приложением сервера внедренного объ­екта. При двойном нажатии кнопкой мыши над связанным объектом приложение сервер запускается в отдельном окне (как в OLE 1).

В терминах OLE описанное выше действие (двойное нажатие для ак­тивации сервера) называется активацией извне (outside-in). При акти­вации извне сервер объекта не активируется (не за­пуска­ется), пока пользователь не нажмет над объектом кнопку мыши дважды. Активация изнутри (inside-out) требует, чтобы объект-кли­ент активи­ровал объект-сервер всегда, когда объект-сервер виден. Сервер принимает управление по однократному нажатию кнопки мыши - потому, что для активируемых изнутри объек­тов он уже за­пущен заранее.

Как можно видеть, архитектура ОLE достаточно богата, а свя­зывание и внедрение - лишь часть общей структуры.



Информация о работе «Разработка программы контроллера автоматически связываемых объектов для управления конструкторской документацией в среде Windows 95/NT (дипломная работа)»
Раздел: Информатика, программирование
Количество знаков с пробелами: 135709
Количество таблиц: 1
Количество изображений: 0

Похожие работы

Скачать
112819
1
11

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

0 комментариев


Наверх