Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИПОВС (2002) / Shimarik / Shimarik / Специальная часть.doc
Скачиваний:
28
Добавлен:
16.04.2013
Размер:
1.9 Mб
Скачать

2.6.1. Общие сведения

Вперые технология OLE (А.Я. Архангельский “Программирование в среде Delphi 6”) появилась как OLE 1.0 в Windows 3.1 и означала, что пользователь мог создавать сложные составные документы, в которых содержались объекты различного происхождения; Внедрен­ные объекты могли редактироваться простым двойным щелчком мыши на соот­ветствующем элементе данных. Например, можно было дважды щелкнуть на элек­тронной таблице Excel, встроенной в документ редактора Word, и в отдельном окне запускался Excel с загруженным рабочим листом, готовым к редактирова­нию. После завершения редактирования Excel позволял сохранить изменения во внедренном в документ Word объекте Excel.

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

Дальнейшее развитие внедрение и связывание получило в OLE 2.O. Основой этого усовершенствованного подхода явилась компонентная модель объекта (СОМ). Это модель объекта в системном обеспечении, которая предусматривает полную совместимость во взаимодействии между компонентами, написанными разными компаниями и на разных языках. Ключом к успеху является модуль­ность этих компонентов. Они могут покупаться, модернизироваться или заменять­ся поодиночке или группами, причем это никак не влияет на работу целого.

СОМ определяет двоичный интерфейс, полностью независимый от языка программирования, использованного при реализации компонента. Компонент, написанный в соответсвии со спецификациями двоичного интерфейса СОМ, может вступать во взаимодействие с другим компонентом, не зная в действительности ни­чего о реализации последнего.

Новая особенность, появившаяся в OLE 2.0, — это автоматизация OLE, кото­рая обеспечивает доступ к объектам приложения и манипуляцию с ними извне. Такие объекты, предоставленные (экспонированные) для внешнего пользования, называются автоматными объектами OLE. Типы объектов, которые могут быть экспонированы, так же разнообразны, как и сами приложения Windows. Тексто­вый Процессор может экспонировать в качестве автоматного объекта документ, аб­зац или предложение. Электронная таблица может экспонировать таблицу, диа­грамму, ячейку или группу ячеек.

Главное отличие автоматных объектов от обычных объектов OLE состоит в том, что автоматные объекты доступны только программно, они создаются и ис­пользуются при помощи программного кода и, следовательно, в принципе времен­ны. Они не могут быть внедрены или связаны. Они могут существовать только в те­чение времени выполнения программ и не видны непосредственно конечно­му пользователю.

Существуют два типа автоматных серверов: внутри-процесса и вне-процесса (их еще называют локальными). C++Builder поддерживает оба типа серверов.

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

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