- •Разработка объекта автоматизации в среде delphi.
- •6.6 Методические указания.
- •6.6.1 Расширения com
- •6.6.2 Мастера для создания сом-объектов
- •6.6.3 Технология автоматизации
- •6.6.4. Интерфейс iDispatch
- •6.6.5. Интерфейсы диспетчеризации
- •6.6.6 Создание серверов автоматизации в Delphi
- •6.6.6.1 Создание внешнего сервера автоматизации.
- •6.6.6.2 Разработка клиента автоматизации
- •7.6.7 Использование ole-документов в приложениях
- •6.6.7.1 Основные сведения об ole-документах
- •6 .6.7.2 Компонент tOleContainer.
- •6.6.7.3 Применение компонента tOleContainer для работы с ole-документами.
- •6.6.7.3.1 Простейший пример использования компонента tOleContainer.
- •6.6.7.3.2 Основные способы использование компонента tOleContainer.
- •6.6.7.3.3 Управление объектом внутри ole-контейнера
6.6.3 Технология автоматизации
Технология автоматизации (OLE Automation) разработана на основе технологии СОМ. Так же как и СОМ, автоматизация позволяет использовать функции одних приложений в других приложениях. Автоматизация - это механизм обмена информацией между процессами в операционной системе Windows, с помощью которого одна прикладная программа может управлять другой. Технология OLE Automation обеспечивает выполнение базовых функций, позволяющих обособленным программным модулям связываться и обмениваться информацией. Многие используемые в технологии автоматизации термины подобны тем, которые применяются при описании технологии СОМ.
Объект автоматизации не имеет принципиальных отличий от объекта СОМ и представляет собой отдельный, самодостаточный объект, разработанный для выполнения специфической задачи или функции. Отличие от объекта СОМ заключается только в том, что доступ к объектам автоматизации осуществляется через специальные интерфейсы, называемые интерфейсами диспетчеризации (dispinterface). Интерфейсы диспетчеризации похожи на обычные интерфейсы СОМ, но позволяют упростить обращение к объекту автоматизации. Приложение, предоставляющее те или иные сервисы и применяющее для этой цели интерфейсы содержащихся внутри него адресного пространства COM-объектов, называется сервером автоматизации. Приложение, использующее эти сервисы, называется контроллером автоматизации и может быть создано с помощью подавляющего большинства современных средств разработки программного обеспечения.
В процессе выполнения II учебной практики [11] Вы уже познакомились с использованием готовых COM-объектов, базирующихся на технологии OLE Automation, широко применяющейся в рамках пакета Microsoft Office. По сути, Вы создавали контроллеры автоматизации для приложений MS Office. Однако, технология автоматизации не ограничивается офисными приложениями. Серверами автоматизации могут являться не только приложения Microsoft Office (Word, Excel, PowerPoint), но и такие популярные приложения как Microsoft Internet explorer, Enterprise-серверы Microsoft (SQL Server, CommerceServer, BizTalk Server, SharePoint Portal Server, Content management Server и др.) и даже сама оболочка Windows 95/98/NT/2000/XP. Из приложений других фирм можно отметить клиентские части Oracle 7 и Oracle 8, генератор отчетов Crystal Reports фирмы Crystal Decisions, пакет автоматизации проектирования AutoCAD фирмы AutoDesk, а также другие многочисленные программные продукты самого разнообразного назначения.
Сервер автоматизации представляет собой исполняемый модуль, который может включать в себя несколько объектов автоматизации.
Серверы автоматизации подразделяются на внутренние (in-process) и внешние (out-process). Внутренние серверы являются динамическими библиотеками, которые выполняются в адресном пространстве клиента автоматизации. Внешние серверы представляют собой самостоятельные приложения, которые выполняются в отдельных процессах по отношению к клиенту автоматизации.
Каждый из типов серверов имеет свои преимущества. Главным достоинством внутренних серверов является высокая скорость обмена данными с клиентом, которая достигается за счет того, что DLL-библиотеки работают в одном процессе с клиентом. Кроме того, DLL-серверы обычно более просты в отладке и тестировании, чем серверы-приложения.
С другой стороны, внешние серверы более выгодны с точки зрения изоляции ошибок. В случае использования внешних серверов даже аварийное завершение работы клиента не приведет к сбою в работе сервера.
К
онтроллером
(диспетчером) автоматизации
принято называть клиентское приложение,
управляющее
объектом автоматизации. Контроллер
автоматизации для управления объектом
автоматизации использует методы
интерфейсов этого объекта. Для получения
информации об интерфейсах служат
библиотеки типов.
Взаимоотношение технологий COM и OLE приведено на рис. 6.1.
Как видно из рис. 6.1, технология OLE базируется на технологии COM, а автоматизация является лишь одной из составляющих OLE-технологии.
Использование COM позволило реализовать концепцию составного документа, позволяющего хранить информацию в различных форматах, осуществлять перемещение документов с помощью мыши (Drag & Drop), производить редактирование информации непосредственно по месту ее расположения в составном документе (активизация по месту). Характеристики основных возможностей, поддерживаемых OLE-технологией, приведены в табл. 6.4.
В свою очередь, технология COM, помимо собственно компонентной объектной модели, включает в себя:
Таблица 6.4 |
|
Основные возможности, поддерживаемые OLE 2.0 |
|
Возможность |
Описание |
Связывание |
Объекты OLE связываются с приложением-контейнером. Контейнер в действительности не хранит сами объекты, а только связи. Если связанные объекты обновляются, приложение-контейнер обнаружит изменения автоматически |
Внедрение |
Объекты OLE вставляются непосредственно в приложение-контейнер. Сохранение приложений на диске приводит также к сохранению внедренных объектов. Если объект внедряется в контейнер, то в действительности внедряется его копия. Изменения в исходном объекте не оказывают воздействия на объект, внедренный в контейнер |
Операции с буфером обмена |
Объекты OLE вырезаются, копируются и вставляются с помощью стандартных операций с буфером обмена. Вставка объекта OLE из буфера обмена помещает не просто изображение чего-нибудь в приложение, а полный объект OLE. Активизировав этот объект, можно выполнять операции, которые были доступны для исходного объекта. Если в приложение был вставлен Word-объект, при его активизации будет запущено все приложение Word for Windows |
Перетаскива-ние объектов |
Объекты OLE перетаскиваются с помощью мыши и опускаются в приложения-контейнеры OLE. Опущенные объекты являются полноценными объектами OLE с возможностью местной активизации, о чем шла речь при обсуждении операций с буфером обмена |
Составные файлы |
Сохранение документов, содержащих внедренные объекты, приводит к созданию файлов документов со всеми их внедренными объектами. OLE использует составные файлы, которые разбиты на потоки (streams) и хранилища (storages). Каждый документ хранится в своем собственном хранилище |
Автоматизация |
Некоторые свои свойства и методы приложения могут сделать доступными для вызова из других приложений. Вместо посылки сообщений, как в случае с DDE, автоматизация позволяет непосредственно вызывать функции так, как в C++ вызывается обычная функция-член. Автоматизация - это технология, встроенная в OLE и позволяющая одному приложению использовать функциональные возможности другого |
Локализация |
Объекты, которые автоматизированы, связаны или внедрены, могут работать в приложении, использующем, например, другой язык. OLE облегчает интернационализацию объектов, предоставляя множество стандартов, позволяющих преодолеть трудности использования разных языков и другие национально-зависимые особенности |
Динамические запросы |
Одной из самых мощных возможностей OLE является способность определять свойства объекта OLE во время работы приложения. При использовании DDE нужно было заранее знать о приложении, с которым требовалось установить связь. В OLE нет необходимости знать что-либо заранее. Используя функцию Querylnterface, поддерживаемую объектами OLE, можно во время работы получить характеристики объекта |
хранилище информации, представляющее набор интерфейсов, позволяющих организовать структурированное хранение информации (т. н. “файловая система без файлов”);
систему имен (monikers), обеспечивающую создание уникальных имен для объектов и их интерфейсов;
унифицированный обмен данными, представляющий собой протокол обмена информацией между клиентом и объектом, поддерживающий любые форматы данных;
информация о типах. Информация о типах обычно хранится в файлах формата tlb (Type Library) или olb (Object Library). В библиотеках типов содержится следующая информация:
информация о перечислениях;
описания интерфейсов и интерфейсов диспетчеризации;
описания классов составных объектов;
ссылки на описания типов из других библиотек типов.
Для доступа к объектам автоматизации не требуется информации о типах. Однако наличие информации о типах позволяет производить проверку синтаксиса кода, используемого для обращения к методам интерфейсов объектов автоматизации, на стадии компиляции приложения.
