Архитектура компонентных решений

advertisement
Архитектура компонентных решений
Архитектура СОМ
Модель многокомпонентных объектов (Component Object Model, СОМ) позволяет
определить стандарт взаимодействия между объектами-приложениями и объектамикомпонентами (например, Microsoft Word или приложение на Visual Basic), a также
совместно использовать данные. Объекты взаимодействуют через интерфейсы СОМ.
На этом занятии Вы узнаете об архитектуре СОМ и роли интерфейсов во взаимодействии
объектов СОМ. Кроме того, познакомитесь с распределенной моделью СОМ (Distributed
СОМ, DCOM), обеспечивающей взаимодействие объектов в сетевой среде.
Цель:





охарактеризовать архитектуру COM;
описать связь между объектами через интерфейсы COM;
объяснить, как интерфейс IUnknown управляет другими интерфейсами объекта;
описать DCOM;
Характеристики СОМ
Объекты СОМ проектируют и конструируют на основе двоичного стандарта, который
описывает структуру, обеспечивающую взаимодействия приложений или других
компонентов. До тех пор пока объекты — приложения и компоненты — опираются на
двоичный стандарт СОМ, они могут взаимодействовать друг с другом независимо от того,
на каком языке или какими средствами разработки они созданы.
Языковая независимость
Поскольку объекты СОМ должны соответствовать двоичному интерфейсу, разработчики
могут пользоваться любым языком программирования, поддерживающим этот интерфейс.
Клиентский объект-приложение или объект-компонент не задумываются о языке, на
котором написан объект СОМ, а только о том, можно ли связаться с ним через
стандартный двоичный интерфейс.
Технология СОМ произвела настоящую революцию в разработке программ — особенно в
создании многокомпонентного программного обеспечения, — не требуя изменений в
архитектуре сетей, аппаратном обеспечении и средствах программирования.
Взаимодействие приложений
СОМ обеспечивает взаимодействие приложений, написанных на разных языках.
Например, редактор текстов одного производителя может связаться с объектом
«электронная
таблица»
другого
разработчика,
а
затем
—
даже
импортировать из него данные. Кроме того,
электронная таблица может принимать
данные через объект СОМ, расположенный
на мэйнфрейме.
Пока объекты поддерживают стандартные
интерфейсы при обмене данными, редактор
текстов, электронная таблица и база данных
на мэйнфрейме могут не иметь информации
о фактической реализации друг друга.
Редактору текстов требуется лишь знать, как
связаться с электронной таблицей; а той —
как предоставить свои сервисы любому, кто
хочет связаться с ней.
Примечание Технологии связывания и внедрения объектов (Object Linking and
Embedding, OLE) и ActiveX основаны на СОМ. Хотя термин ActiveX все чаще
употребляют вместо OLE, последний по-прежнему применяется в отношении отдельных
реализаций, например структурированных хранилищ OLE (OLE Structured Storage) и OLEавтоматизации (OLE Automation).
Объекты СОМ
Объекты СОМ — это повторно используемые программные компоненты, которые
разработаны специально для вызова из других приложений. Ранее объекты, созданные в
объектно-ориентированных языках программирования (ООП), можно было повторно
применять только в том же самом языке. Технология СОМ позволяет инкапсулировать
объекты ООП в повторно используемые динамические библиотеки (DLL), ActiveXэлементы (ОСХ) или исполняемые файлы для работы в разных приложениях и языках
программирования. Например, компонент, созданный в Visual C++, Вы легко и просто
вставите в приложение, написанное на Visual Basic.
Структура и иерархия объектов
СОМ описывает не структуру объектов, а их взаимодействие. Внутреннюю структуру
компонента определяют язык программирования и среда разработки, которая, однако, не
устанавливает стандарты на работу с объектами за пределами приложения. Благодаря
языково-независимым интерфейсам, СОМ действует там, где языки программирования
уже не способны предоставить необходимые возможности взаимодействия приложений и
компонентов.
Предоставление сервисов
Объекты СОМ предоставляют свои сервисы клиентам — любой части кода (не
обязательно приложению), которая использует сервисы объекта. Серверный объект — это
часть кода, которая предоставляет сервисы клиенту. Доступ к сервисам осуществляется
через интерфейсы СОМ, которые вызываются объектами-клиентами.
Сервисы реализуют два основных типа объектов СОМ: внутрипроцессные (in-process) и
внешние (out-of-process). Первые — это библиотеки динамической загрузки, которые
всегда выполняются локально. Вторые представляют собой исполняемые модули и могут
работать как на локальном, так и на удаленном компьютере.
Интерфейсы СОМ
Возможности объектов СОМ доступны через интерфейс. Он представляет собой
указатель (адрес памяти) на функции, вызываемые клиентом. Такое взаимодействие
между пользователем сервисов объекта — клиентом — и сервером, реализующим объект
и его сервисы, называется контрактом. Сервисы имеют и другое название — методы,
или функции-члены. Контрактом между программными компонентами определяется:

уникальный идентификатор интерфейса, отличающий его от других;

местоположение функций в интерфейсе;

назначение функций;

аргументы и возвращаемые значения каждой функции.

Контракт не обязан указывать:

способ реализации функции;

код, составляющий функцию;

язык, использованный для создания объекта;

платформу, на которой выполняется объект.
Интерфейс не является ни объектом, ни классом (определением) объектов. Интерфейс —
это абстрактный класс, который нужно проектировать исходя из возможного
применения в самых разных контекстах. Например, простой интерфейс базового чтениязаписи потоков данных подойдет для множества самых разных клиентов и типов
объектов.
Интерфейс IUnknown
Объект СОМ имеет несколько интерфейсов, что позволяет обслуживать клиентов разных
типов. Тем не менее все объекты СОМ поддерживают как
минимум один стандартный интерфейс — IUnknown, который
управляет всеми другими интерфейсами объекта. Этот
интерфейс имеет три основных метода: AddRef, Release и
Querylnterface.
Метод AddRef реализует объект СОМ. При создании каждого
экземпляра объекта значение счетчика ссылок для него
увеличивается. В Visual Basic метод AddRef вызывается при использовании функции
CreateObject.
Метод Release применяется для уничтожения объекта и уменьшения значения счетчика
ссылок. В Visual Basic это делают, присваивая объекту значение Nothing.
Метод Querylnterface предоставляет список интерфейсов, поддерживаемых объектом.
Например, объект СОМ может иметь разные интерфейсы для работника и для менеджера
(lEmployee и IManager). Если клиент содержит объектную переменную, которая указывает
на достоверный интерфейс СОМ, он вправе, используя этот метод, запросить любой
интерфейс, предоставляемый объектом. Visual Basic предоставляет такую возможность
автоматически средствами оператора Set.
Пример. Здесь на Visual Basic выполняются методы AddRef и Release для объекта СОМ:
'Вызов метода AddRef
Set MyObject = CreateObject('Word.Application")
'Вызов метода Release
Set MyObject = Nothing
Интерфейс IDispatch
IDispatch — это интерфейс автоматизации для контроллеров, не использующих
интерфейсы СОМ напрямую. Исполняемый файл или DLL, использующие I Dispatch,
называют серверами автоматизации. При доступе к объекту через интерфейс IDispatch
применяется отложенное связывание — реальный доступ происходит во время
выполнения. IDispatch поддерживает следующие основные методы.
GetIDsOfNames — отображает имя одного члена класса и, по желанию, набор имен
аргументов в соответствующий набор целых идентификаторов связи (Dispatch Identifier,
DISPID), которые затем можно использовать в вызовах метода Invoke.
GetTypeInfo — извлекает информацию о типах объекта.
GetTypeInfoCount — извлекает информацию о типах, предоставляемых объектом
(возвращает 0, если информации о типах нет, и 1 — если есть).
Invoke — предоставляет доступ к свойствам и методам объекта.
Во время выполнения клиент передает строку с именем свойства (или метода), которое он
хочет вызвать, методу IDispatch.GetIDsOfNames. Если данное свойство (или метод)
объекта существует, клиент получает идентификатор соответствующей функции. Затем
его можно использовать для фактического вызова свойства (или метода) средствами
метода IDispatch.Invoke. Методы GetTypeInfoCount и GetTypeInfo позволяют получать
из библиотеки типов компонента информацию об интерфейсах, методах и свойствах,
которые он поддерживает.
Пример. В этом коде на Visual Basic функция CreateObject применяется в операторе Set
для создания нового объекта, который использует отложенное связывание и интерфейс
IDispatch.
Dim MyObject as Object
Set MyObject = CreateObject("Word.Application")
Применение общей объектной переменной обеспечивает отложенное связывание — Вы
можете использовать одну и ту же переменную для различных объектов и для объектов,
которые поддерживают только отложенное связывание.
Виртуальные таблицы
Автоматизация позволяет ActiveX-клиенту вызывать метод или свойство напрямую. Этот
способ, не использующий интерфейс IDispatch, называется связыванием через
виртуальную таблицу. В Visual Basic применение виртуальной таблицы именуют ранним
связыванием. Для него необходима информации о типах в виде библиотеки типов. Клиент
получает эти данные на стадии компиляции, проверяет типы и синтаксис и затем
вызывает методы и функции напрямую. На стадии выполнения раннее связывание
работает гораздо быстрее, поскольку местонахождение сервера автоматизации уже
известно, типы данных и синтаксис проверены, а доступ осуществляется непосредственно,
без вызова IDispatch.
Для ссылки на экземпляры интерфейсов клиенты используют указатели, получая их во
время создания объекта или
запрашивая объект. Определив
интерфейс, Вы задаете массив
указателей
на
функции,
известный
как
виртуальная
таблица (Virtual Table, VTBL).
Функции, на которые указывают
члены
VTBL,
называются
методами,
или
функциямичленами
интерфейса.
Общепринято имена интерфейсов
начинать с буквы «I».
Виртуальная таблица содержит
список адресов всех свойств и
методов, включенных в объект, в
том
числе
функции-членов
поддерживаемых
им
интерфейсов. Первые три члена
VTBL — из состава интерфейса I
Unknown,
а
последующие
относятся к другим поддерживаемым интерфейсам — например, ряд полезных
интерфейсов предоставляет OLE (их имена обычно начинаются с 101е). Любой человек,
например Вы, вправе определить свои интерфейсы по мере разработки компонентов
приложения.
Глобально-уникальные идентификаторы
Для идентификации интерфейсов и классов компонентов СОМ использует уникальные
идентификаторы
(Global
Unique
Identifier, GU1D) — 128-разрядные
целые числа, которые гарантированно
неповторимы. Имена интерфейсам и
классам присваиваются только для
удобства, и они достоверны лишь на
компьютере, где хранится компонент.
Применение
уникальных
идентификаторов обезопасит Вас от
случайного вызова не того элемента,
интерфейса или метода даже в сети с
миллионами компонентов.
CLSID и IID
Каждый созданный Вами компонент
должен иметь уникальный GUIDиденти-фикатор, называемый идентификатором класса (Class Identifier, CLSID); он
позволяет ссылаться на компонент. Точно так же каждому интерфейсу Вашего
компонента
необходимо
присвоить
персональный
GUID-идентификатор
—
идентификатор интерфейса (Interface Identifier, IID).
Строка идентификатора класса хранится в ключе реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID
DСOM
Распределенная модель многокомпонентных объектов (Distributed Component Object
Model, DCOM) — это протокол,
обеспечивающий гибкое, защищенное и
эффективное
взаимодействие
программных компонентов в сетевой
среде.
Прежнее название DCOM — Network
OLE. Эта спецификация разработана для
применения поверх самых разных
сетевых транспортов. DCOM основана
на спецификации DCE-RPC фонда
открытого программного обеспечения
(Open Software Foundation, OSF) и,
благодаря использованию технологии
СОМ, поддерживает Java-апплеты и
ActiveX-компоненты. Например, можно средствами Java создать апплет, который
вычисляет стоимость портфеля ценных бумаг на основе текущих котировок,
отслеживаемых в режиме реального времени через Интернет средствами DCOM.
Когда клиент и компонент хранятся на разных машинах, DCOM просто заменяет
локальный механизм взаимодействия процессов сетевым протоколом. Ни клиент, ни
компонент не знают о том, что соединение между ними стало гораздо длиннее.
Диспетчер соединений удаленной автоматизации
Уровень управления доступом для сетевого компьютера устанавливают и с помощью
диспетчера соединений удаленной автоматизации (Remote Automation Connection
Manager, RACMAN). Для реализации стратегии защиты диспетчер соединений
необходимо установить и запустить на удаленном компьютере. Диспетчер соединений,
поставляемый в составе Visual Basic 5.0 Enterprise Edition, используют и для соединения с
источниками СОМ через удаленную автоматизацию или DCOM.
Вкладка Client Access окна диспетчера соединений позволяет выбрать значение уровня
защиты для удаленного компьютера. Возможные варианты перечислены во второй
колонке приведенной ниже таблицы.
Имя
Значение Описание
Disallow
Remote
All
0
Allow
Remote
2
Creates by Key
Allow
Remote
3
Creates By ACL
Allow All Remote
1
Creates
Не позволяет создавать какие-либо объекты
Объект будет создан, только если установлен флажок Allow Remote Activation.
В результате идентификатор класса компонента (CLSID) в реестре Windows
дополняется параметром AllowRemoteActivation=Y
Объект может создать только пользователь, имя которого занесено в список
контроля доступа (Access Control List, ACL), заданный в реестре Windows для
данного класса (только для Windows NT)
Разрешает создавать любые объекты
Резюме
Модель многокомпонентных объектов (Component Object Model, СОМ) определяет
стандарт взаимодействия между объектами-приложениями и объектами-компонентами
(такими, как Microsoft Word или приложение на Visual Basic) и совместного
использования данных. Языковая независимость СОМ позволяет использовать объекты
повторно в различных приложениях и программных средствах. Взаимодействие
компонентов осуществляется средствами стандартных или специализированных
интерфейсов СОМ. Интерфейс — это контракт между двумя объектами, который
фиксирует:

уникальный идентификатор интерфейса, отличающий его от других;

местоположение функций в интерфейсе;

назначение функций;

аргументы и возвращаемые значения каждой функции.
Все объекты СОМ должны поддерживать как минимум один стандартный интерфейс —
IUnknown, который управляет всеми другими интерфейсами объекта. Доступ к членам
или функциям объекта СОМ можно получить через интерфейс IDispatch или виртуальную
таблицу функций (VTBL).
СОМ использует глобально-уникальные идентификаторы (GUID) для определения всех
интерфейсов и компонентных классов.
Распределенная модель многокомпонентных объектов (DCOM) — это протокол,
обеспечивающий гибкое, защищенное и эффективное взаимодействие программных
компонентов в сетевой среде.
Реализация СОМ
Чтобы пользоваться всеми преимуществами технологии СОМ, важно понимать, как она
реализована. Это занятие посвящено техническим аспектам реализации СОМ, включая
контроль версий, регистрацию компонентов и связь между объектами.
Цель:

описать регистрацию компонентов в библиотеке COM;

объяснить важность контроля версий для технологии компонентов;

описать, как объекты COM взаимодействуют между собой.
Библиотека СОМ
Библиотека СОМ обеспечивает работу СОМ. Этот системный компонент инкапсулирует
все действия; связанные с
запуском компонентов и их
связыванием.
Обычно,
создав компонент СОМ,
приложение передает его
идентификатор
класса
(CLSID) библиотеке СОМ.
Библиотека
использует
CLSID для нахождения кода
соответствующего сервера в
регистрационной
базе
данных.
Когда
клиент
запрашивает
создание
объекта
этого
класса,
библиотека СОМ выполняет
запрос для поиска и запуска
соответствующего сервера.
Взаимодействие процессов
Именно библиотека СОМ делает взаимодействие между процессами прозрачным. Теперь
не приходится заботиться о местонахождении вызываемых компонентов. Объекты СОМ
могут свободно взаимодействовать с другими компонентами, выполняющимися в рамках
того же процесса, в другом процессе или на ином компьютере. Более того, код,
необходимый для реализации или использования элемента, одинаков для любого из этих
вариантов. Поэтому при появлении новой библиотеки СОМ с поддержкой межсетевого
взаимодействия существующие компоненты могут работать в распределенной среде без
изменений исходного кода, перекомпиляции и повторного распространения среди
покупателей.
Контроль версий компонентов
По мере расширения функциональности компонентов все более необходим механизм
контроля их версий. Такой механизм — фундамент СОМ. Время от времени требуется
расширить функции серверного объекта, не затронув при этом клиенты. Именно в таких
ситуациях незаменим встроенный в СОМ механизм контроля версий: серверные объекты
продолжают поддерживать интерфейсы для старых клиентов, одновременно предоставляя
новым клиентам интерфейсы самой свежей версии.
Поддержка эволюции компонентов
СОМ решает проблему контроля версий, обеспечивая возможность эволюции
компонентов. Существующие клиенты при изменении серверных объектов остаются
совместимыми — средства СОМ обеспечивают поддержку как новых, так и старых
интерфейсов. На стадии выполнения старые и новые клиенты безопасно сосуществуют с
серверным компонентом СОМ. Ошибки возможны только во время связывания и вызова
Query Interface, однако они легко поддаются обработке. СОМ гарантирует, что не
случится ошибки, вызванной отсутствием ожидаемого метода или изменением
параметров его вызова.
Обратная совместимость
Visual Basic реализует обратную совместимость путем сохранения информации об
идентификаторах класса или интерфейса предыдущих версий компонента. Если Вы
создаете новую версию компонента в Visual Basic, применяя режим Binary Compatibility,
она сможет работать со старыми клиентами. При этом клиентские приложения,
откомпилированные с ней, будут пользоваться новыми функциями, поскольку при их
компиляции задействованы новые идентификаторы класса и интерфейса. И пока
сохраняется двоичная совместимость, клиенты с отложенным связыванием смогут
работать с Вашим компонентом.
Добавление новых интерфейсов
Обновление программного модуля — это обычно добавление каких-либо функций или
модернизация существующих. Компонент СОМ приобретает новые возможности за счет
поддержки последних версий интерфейсов. Поскольку существующие интерфейсы при
этом не меняются, компоненты, использующие их, будут работать по-прежнему. Новые
же компоненты смогут воспользоваться новыми интерфейсами.
Поскольку при применении раннего связывания вызывается метод Query Interface
интерфейса lUnknown, текущие возможности компонента СОМ можно выяснить при
каждом его использовании. Этот механизм обеспечивает новым клиентам немедленный
доступ к появившимся возможностям компонента.
Механизм контроля версий
Механизм контроля версий считают удачным, если он позволяет обновить один
системный компонент без обновления других.
Приложения могут создавать экземпляры Ваших классов, используя функцию
CreateObject и программный идентификатор, как это показано ниже.
Пример Функция CreateObject находит идентификатор класса в реестре Windows и
использует его для создания объекта, гарантируя тем самым создание самой последней
версии.
Dim X As Object
Set X = CreateObject("MyComponent.MyObject")
Взаимодействие между объектами
СОМ позволяет клиентам связываться с объектами независимо от того, где они
выполняются: в том же самом процессе, на том же
компьютере или на другом компьютере сети. Таким
образом обеспечивается единая программная модель для
объектов-клиентов и объектов-серверов.
Стандартный маршалинг
Маршалинг (marshaling) — это упаковка всех параметров
и возвращаемых значений и передача их через границы
процессов. СОМ поддерживает так называемый стандартный маршалинг, который
надежно работает для большинства объектов, значительно снижая требования к
программной реализации и делая процесс мар-шалинга полностью прозрачным.
Произвольный маршалинг
Стандартный маршалинг есть не что иное, как частный случай произвольного маршалинга (custom marshaling). Вы можете реализовать свой вариант маршалинга, если
нужно, чтобы объект выполнял один набор действий при сетевом доступе и другой — при
локальном, эффективно маскируя это различие от клиента. Такая архитектура позволяет
проектировать интерфейсы клиент-объект, не заботясь о производительности сети — эти
вопросы можно решить позднее, без изменения разработанной инфраструктуры
приложения.
Связь с клиентом
До некоторого момента все вызовы серверных функций клиентом являются внутрипроцессными, однако рано или поздно возникает необходимость выхода за границы
процесса. Поскольку виртуальные таблицы позволяют агенту (например, СОМ)
перехватывать вызов функции (и возврат), агент может при необходимости
переадресовать их механизму удаленного вызова процедур (Remote Procedure Call, RPC)
так, что ни клиент, ни сервер этого не заметят. Единственное различие заключается в
производительности — у внутрипроцессных вызовов она заметно выше.
Внутрипроцессные компоненты
Внутрипроцессные компоненты обычно реализуется в виде библиотек динамической
загрузки (DLL). Они выполняются в том же адресном пространстве, что и клиент. Это
самый эффективный метод связи между клиентом и компонентом — чтобы
воспользоваться возможностями компонента, клиенту достаточно вызвать функцию.
Внепроцессные компоненты
Если объект находится вне процесса, вызов сначала переадресуется объектупредставителю (proxy), который предоставляется моделью СОМ или самим объектом
(если его автор этого пожелает). Представитель упаковывает параметры вызова (включая
любые указатели на интерфейс) и генерирует соответствующий RPC-вызов (или иной
механизм в случае самостоятельно реализованных представителей), адресованный
другому процессу или компьютеру, где реализован объект.
Связь с сервером
На сервере все вызовы функций интерфейса объекта выполняются через указатель на этот
интерфейс. Указатель имеет смысл только в контексте конкретного процесса, поэтому
роль вызывающего может играть только код того же процесса. Если объект
внутрипроцессный, вызывающим будет сам клиент, в противном же случае — объект«заглушка» (stub), предоставляемый СОМ или самим объектом. Заглушка принимает
вызов RPC (или другого механизма в случае самостоятельно реализованного
представителя) от представителя процесса-клиента, распаковывает параметры и вызывает
соответствующий интерфейс серверного объекта. Независимо от конкретного механизма,
клиент и сервер всегда считают, что взаимодействуют непосредственно с кодом внутри
процесса.
Удаленный вызов процедур
Удаленный вызов процедур (Remote Procedure Call, RPC) основан на спецификации RPC
распределенной среды программирования (Distributed Computing Environment, DCE-RPC)
и по этой причине не зависит от платформы. СОМ-компоненты могут вызывать друг
друга в гетерогенной среде, включающей платформы Windows 95, Windows NT, Unix и
Macintosh и другие, поддерживающие DCE-RPC.
Резюме
СОМ позволяет клиентам связываться с объектами прозрачно, независимо от того, где они
выполняются: в рамках того же процесса, в другом процессе или на ином компьютере.
Библиотека СОМ — основа прозрачного взаимодействия между процессами. Она
инкапсулирует всю работу, связанную с запуском компонентов и установлением связи
между ними, а также избавляет компоненты от контроля за их фактическим
местонахождением.
Поддержка контроля версий и эволюции компонентов — фундамент СОМ. Благодаря ей,
серверные объекты СОМ поддерживают интерфейсы для старых клиентов, одновременно
предоставляя новым интерфейсы самой свежей версии.
Связывание и внедрение объектов
Связывание и внедрение объектов (Object Linking and Embedding, OLE) — основанный на
СОМ механизм, позволяющий приложениям взаимодействовать между собой. Он
повышает эффективность работы за счет использования в приложении возможностей
других программ. OLE применяют для построения составных документов, которые можно
хранить в одном составном файле. На этом занятии Вы узнаете, как применять OLE для
создания составных документов и управления приложениями.
Цель:



создать составной документ;
использовать OLE-автоматизацию для управления приложением;
рассказать, что такое структурированное хранилище и как оно работает.
Составные файлы
Технология составных документов OLE основана на СОМ, структурированных
хранилищах
и
унифицированной передаче
данных. Объект «составной
документ»
—
это,
в
сущности, объект СОМ,
который можно внедрить в
существующий
документ
или связать с ним. Как
всякий объект СОМ, он
предоставляет
клиентам
интерфейс IUnknown. Этот
интерфейс делает доступными указатели на другие интерфейсы, реализующие конкретные
возможности составного документа, а именно:

IQleObject;

IQleLink;

IViewObject2.
При создании составного документа одно приложение является контейнером, а другое —
сервером. Серверный документ может быть связан с приложением-контейнером или
внедрен в него. При связывании документа он хранится в отдельном от контейнера файле.
Внедренные документы, напротив, хранятся в том'же файле, что и контейнер.
Применение составных файлов
Популярность технологии составных файлов объясняется эффективным и гибким
доступом к данным объекта, который предоставляет система хранилищ OLE. Она
позволяет считать с диска в память объект или его часть, а не весь файл, что весьма важно
при загрузке документа OLE с большим числом объектов или одним объектом большого
объема (например, видеоклипом). Этот способ гораздо эффективнее — так пользователь
сразу получает доступ к нужным данным, не ожидая загрузки всех материалов.
Разнообразие форматов и источников данных
Составные документы OLE позволяют работать внутри одного приложения со
множеством данных в любых форматах из самых разнообразных источников. Например,
пользователь может вставить в документ текстового редактора график из одного
приложения и звуковой объект — из другого. Активизировав график, Вы запустите
создавшую его программу (или часть ее пользовательского интерфейса, содержащую
средства редактирования объекта). Активизация звукового объекта позволит
воспроизвести его средствами соответствующего приложения. В обоих случаях
пользователь может манипулировать данными из внешних источников в контексте своего
документа.
Структурированные хранилища OLE
При использовании объектов СОМ данные хранятся в специфическом формате,
называемом структурированным хранилищем OLE. Он позволяет объединять данные из
разных документов в один составной документ.
Система хранилищ напоминает файловую систему. Доступ к данным объекта
осуществляется через ряд интерфейсов, предоставляемых OLE. Последний реализует
систему хранилищ в виде составных файлов.
Файлы структурированных хранилищ
Основное назначение СОМ — интеграция приложений. Следствие объединения
приложений — необходимость хранить
содержащуюся в них информацию в одном
и том же файле. Решение этой проблемы
— файловая система внутри файла. Теперь
не надо обрабатывать поток данных с
помощью дескриптора и указателя
смещения
одного
файла:
OLE
предоставляет
модель, позволяющую
трактовать файл как структурированный
набор объектов двух типов — хранилищ и
потоков. Они аналогичны каталогам и
файлам соответственно. Эта модель называется структурированным хранилищем.
Хранилища и потоки
Структурированное хранилище OLE — это иерархическая система хранения данных,
которая имитирует файловую
систему внутри файла. В ней два
уровня хранения:

объекты-хранилища;

объекты-потоки.
Эти объекты аналогичны уровню
каталогов типовой файловой
системы.
Первый
содержит
потоки и/или другие хранилища;
второй — данные. Каждому
объекту соответствует объектхранилище. Доступ к объектам и данным в системе хранения осуществляется через набор
интерфейсов, предоставляемых OLE.
Эффективность структурированных хранилищ
Структурированные хранилища — простой и эффективный метод размещения объектов и
составных файлов. Этот механизм позволяет увеличить производительность и снизить
накладные расходы, характерные для хранения отдельных объектов в обычных файлах.
Вместо этого СОМ помещает все объекты в единый структурированный файл, состоящий
из двух основных элементов: объектов-хранилищ и объектов-потоков. Вместе они
действуют как файловая система внутри файла. Подобно файлу, поток содержит данные в
виде последовательности байтов.
Вложенные объекты
Составной файл СОМ состоит из объекта «корневое хранилище», содержащего по
крайней мере один объект-поток данных
хранилища, и одного или нескольких объектовхранилищ — связанных и внедренных
объектов. Объект «корневое хранилище» назван
по имени файла в той файловой системе, где он
находится. Объекты-хранилища могут включать
любое число объектов-потоков и вложенных
объектов-хранилищ, реализующих объекты
документа. Таким образом, документ содержит
сколь угодно много вложенных объектов.
Например, если в документ Word вставлен
график Excel, корневым объектом будет объект-хранилище документа Word. Он содержит
как свои данные; так и OLE-данные для объекта Word. Кроме того, здесь же находится
объект-хранилище для графика Excel с данными самого объекта и OLE-данными объекта
Excel.
Модификация и добавление объектов
Добавление нового объекта к составному файлу или увеличение имеющегося объекта не
вызывает перезаписи файла хранилища. Вместо этого новые данные записываются в
первую свободную область хранилища, а объект-хранилище соответствующим образом
обновляет свою таблицу указателей (в ней содержится информация о местонахождении
объектов-хранилищ и потоков). Этот механизм повышает производительность операции с
данными и позволяет конечным пользователям работать с составным хранилищем как с
единым файлом, а не как с иерархией отдельных объектов.
Дополнительные преимущества
Избирательный доступ — позволяет загрузить и сохранить только нужный пользователю
объект составного файла, а не файл целиком.
Совместное использование — несколько пользователей или приложений одновременно
могут считывать и записывать информацию в один и тот же составной файл.
Обработка транзакций — пользователи вправе считывать и записывать информацию в
составной СОМ-файл в режиме транзакций, когда все изменения в файле буферизуются и
их можно разом сохранить или отменить.
Нетребовательность к памяти — структурированное хранилище позволяет сохранять
файлы при нехватке памяти.
OLE-автоматизация
OLE-автоматизация
— это сервис OLE, предназначенный для интеграции средств
разработки и приложений: приложения предоставляют свои функции другим
приложениям или управляют их возможностями на одном компьютере или в сетевой
среде. Применение этой технологии обеспечивает автоматизацию приложений и их
объединение с программным кодом. Вот основные элементы OLE-автоматизации.
Программы или их компоненты, которые могут управляться другими приложениями
(серверы OLE-автоматизации). Microsoft Word, Excel, PowerPoint и Outlook — примеры
серверов OLE-автоматизации. Они предоставляет другим приложениям доступ к своим
функциям через объектные модели.
Другие приложения или средства разработки — контроллеры OLE-автоматизации,
программно управляющие серверами OLE-автоматизации за счет доступа к функциям
серверов. Microsoft Visual Basic, Visual C++, Visual FoxPro и Visual Basic for Application
(который встроен в продукты Microsoft Office и может быть лицензирован для
использования в других продуктах) — все это контроллеры OLE-автоматизации.
Фактически, OLE-автоматизация представляет собой процесс обмена инструкциями
между контроллерами и серверами OLE-автоматизации. Пользуясь средствами, которые
предоставил сервер, контроллер передает ему инструкции для выполнения.
Резюме
Технология OLE предназначена для создания составных документов и использования
функциональных возможностей приложений. Технология составных документов OLE
основана на СОМ, структурированных хранилищах и унифицированной передаче данных.
Объект «составной документ» — это объект СОМ, который можно встроить в
существующий документ или связать с ним. Составные документы позволяют
манипулировать данными любых форматов из различных источников внутри одного
приложения.
OLE определяет модель структурированного хранилища, которая трактует файл как
структурированный набор объектов двух типов: хранилищ и потоков. Первые аналогичны
каталогам, а вторые — файлам. Структурированное хранилище увеличивает
производительность и уменьшает издержки, связанные с размещением объектов по
отдельности в разных файлах.
Благодаря OLE-автоматизации приложения могут предоставлять свои функции другим
приложениям или управлять их возможностями на одном компьютере или в сетевой
среде.
Технологии ActiveX
Для изучения необходимо: знание материала «Архитектура компонентных решений».
Элементы управления ActiveX
ActiveX — это основанная на СОМ технология, предоставляющая в распоряжение разработчика базовые строительные блоки для
создания Windows-приложений. ActiveX применяют для создания элементов управления, документов и компонентов, предназначенных
как для рабочего стола, так и для работы в Интернете. Компоненты ActiveX можно реализовать на многих языках программирования,
включая все средства разработки приложений, выпускаемые компанией Microsoft.
Технология ActiveX — логическое развитие технологии связывания и встраивания
объектов (Object Linking and Embedding, OLE), поэтому элементы управления ActiveX
первоначально назывались OLE-элементами управления. Элементы управления ActiveX
— один из самых мощных методов быстрой разработки приложений.
На этом занятии Вы познакомитесь с элементами управления ActiveX и их
использованием в Microsoft Visual Basic, Microsoft Office и Интернете.
Цель:

объяснить, что представляют собой элементы управления ActivX и как они
реализуются средствами Visual Basic, Microsoft Office и в Интернете;

описать преимущества использования элементов управления ActivX;

создать, протестировать и внедрить элемент управления ActivX;

добавить элемент управления ActivX в приложение Visual Basic и на Webстраницу.
Элементы управления ActiveX — это объекты, допускающие повторное использование и
содержащие визуальные элементы и код. Они применяются в контейнерах (например, в
форме или в приложении) и служат для организации или обогащения средств
взаимодействия пользователя с приложением. Имена файлов элементов управления
имеют расширение .осх.
Элементы управления ActiveX используются в приложениях многих типов, например в
Microsoft Office, Microsoft Internet Explorer и Microsoft Visual Basic. Элементы управления
ActiveX можно встраивать в Web-страницы, но область их применения не ограничена
Интернетом.
Спецификации элементов управления ActiveX



Чтобы называться элементом управления ActiveX, объект должен:
быть объектом СОМ;
поддерживать саморегистрацию.
Преимущества элементов управления ActiveX
Элементы управления ActiveX имеют несколько серьезных достоинств:

им требуется меньше интерфейсов, чем их предшественникам — OLE-элементам
управления;

они могут быть безоконными;

они всегда активизируются на месте, что позволяет им взаимодействовать с
объектом OLE внутри контейнера;

их интерфейсы четко определены;

они предоставляют свойства, события и методы;

уменьшают сложность разработки;

инкапсулируют функциональность;

легко модифицируемы;



обеспечивают контроль версий;
поддерживают совместное использование информации;
допускают повторное использование.
Элементы управления ActiveX и приложения
Элементы управления ActiveX используются программистами при разработке
приложении средствами Visual Basic и конечными пользователями при создании
документов Microsoft Office.
Элементы управления ActiveX в Microsoft Office
Приложения Microsoft Office снабжены панелью инструментов элементов управления
ActiveX, содержащей кнопки, переключатели, диалоговые окна и формы.
Office позволяет создавать формы, аналогичные формам Visual Basic. Например, для
разработки формы и определения свойств ее элементов подходит Microsoft Word. Такие
примеры, как формы анкет и опросов, включены в состав мастера
построения Web-страниц. С его помощью можно создать базовую форму, а затем
доработать ее, добавив нужные элементы управления.
Элементы управления ActiveX и Интернет
Инфраструктура ActiveX допускает встраивание элементов управления в Web-страницы
для интерактивной реакции на происходящие события. Элементы управления ActiveX для
Интернета оптимизированы по размеру и скорости и поддерживают асинхронные
соединения. Вот несколько примеров элементов управления ActiveX для Интернета,
которые поставляются в комплекте с Microsoft Internet Explorer:

анимированная кнопка;

градиент;

бегущая строка;

котировки акций.
Преимущества элементов управления ActiveX для Интернета
Элементы управления ActiveX для Интернета:

упрощают и автоматизируют создание страниц;

обогащают средства отображения данных;

расширяют функциональные возможности страниц.
Соглашения по разработке элементов управления ActiveX
Чтобы создать элемент управления для работы в Интернете, Вам придется учесть
сравнительно небольшую скорость передачи данных. Для Интернета лучше всего
выбирать элементы управления в виде небольших кнопок и меток, состоящие всего из
нескольких байтов данных: они прекрасно работают в программах просмотра Web. Кроме
того, производительность элемента управления можно повысить следующим образом:

элементы управления ActiveX следует делать асинхронными — тогда они не будут
блокировать другие функции программы;

элементы управления ActiveX должны как можно скорее становиться доступными
пользователю.
Резюме
ActiveX — преемник OLE. Эту основанную на СОМ технологию, можно использовать для
создания компонентов, взаимодействующих друг с другом независимо от языка, на
котором написан каждый из них. Технологии ActiveX позволяют создавать приложения
как для рабочего стола, так и для Интернета.
Элементы управления ActiveX — это повторно используемые объекты, содержащие
визуальные элементы и код. Имена файлов элементов управления имеют расширение .осх.
Чтобы считаться элементом управления ActiveX, объект должен быть объектом СОМ и
поддерживать саморегистрацию. Элементы управления ActiveX можно использовать в
приложениях многих типов, например в Microsoft Office, Microsoft Internet Explorer и
Microsoft Visual Basic. Предусмотрено встраивание элементов управления ActiveX в Webстраницы, но сфера их применения не ограничена Интернетом.
Элементы управления ActiveX и безопасность
Существует несколько методов защиты информации, хранящейся в компьютере, от
воздействия неисправных или намеренно причиняющих вред элементов Web-страниц
(например, созданных специально с целью уничтожить данные на Вашем жестком диске).
На этом занятии Вы узнаете, как пользователи и разработчики могут контролировать
загрузку содержимого с Web-страницы.
Цель:

перечислсть методы контроля за информацией, загружаемой с Web-страниц;

описать, как разработчик может гарантировать безопасность использования
элемента управления на Web-странице.
Зоны безопасности Internet Explorer
Пользователи Microsoft Internet Explorer располагают средствами контроля за активными
компонентами, загружаемыми с Web-страниц. В
частности, можно запретить использование любых
активных компонентов или разрешить загрузку лишь
некоторых их категорий.
Выбор уровня
Explorer



безопасности
в
Internet
1.
Выберите пункт Internet Options в меню View
Microsoft Internet Explorer.
2.
Откройте вкладку Security.
В списке Zone выберите зону безопасности Internet
Zone и уровень безопас ности (он задается
переключателями в группе под списком).

Вы можете выбрать одну из четырех зон:

Local intranet zone (локальная интрасеть);
Trusted sites zone (доверенные узлы);
Internet zone (Интернет);
Restricted sites zone (потенциально опасные узлы).
Для каждой их этих зон можно установить один из четырех уровней безопасности, перечисленных в приведенной ниже таблице.
Уровень
High (Высокий)
Medium (Средний)
Low (Низкий)
Custom (Нестандартный)
Описание
Программа просмотра отказывается от любых активных компонентов Web-страниц.
Пользователь должен выбрать другой уровень, если он заинтересован в загрузке
активных компонентов
Перед загрузкой активного компонента программа просмотра попросит подтверждения
у пользователя
Все активные компоненты загружаются автоматически, без подтверждения со стороны
пользователя. Этот уровень не рекомендуется для зоны Интернета
Вариант для опытных пользователей, позволяющий по-разному обрабатывать
различные активные компоненты
Если Вы установите высокий уровень безопасности для зоны Интернета, ни один ActiveXкомпонент не будет загружен на Ваш компьютер. Однако же для локальной интрасети
вполне достаточно низкого уровня — риск наткнуться на компонент-вредитель здесь
намного ниже. Отметим, что ActiveX-компоненты загружаются только при подключении
к серверу по локальной сети.
Подпись кода ActiveX
Microsoft и другие компании-производители программного обеспечения разработали
безопасный и надежный способ распространения программ по Интернету, основанный на
цифровой подписи кода элементов управления ActiveX.
Подпись элемента управления
Подписание кода элемента управления его разработчиком начинается с получения
цифрового сертификата от авторизованной компании. Следует иметь в виду, что элемент
управления, подписанный с помощью цифрового сертификата, все же не всегда безвреден.
Цифровой сертификат гарантирует лишь, что полученный код:

разработан квалифицированным разработчиком, подписавшим его;

не был случайно поврежден или преднамеренно изменен.
Установка уровня безопасности
Уровни безопасности и проверка цифровой подписи элемента управления позволяют
пользователю контролировать загрузку и запуск элементов
управления.
Нестандартный уровень безопасности (см. раздел «Зоны
безопасности Internet Explorer» в начале занятия) позволяет
указать, как следует обходиться с подписанными и
неподписанными элементами управления. Чтобы получить
доступ к соответствующим параметрам, щелкните кнопку
Settings на вкладке Security.
Параметр
Описание
Enable (Разрешить)
Prompt
(Требовать подтверждения)
Disable (Запретить)
Элемент управления загружается автоматически
Перед загрузкой запрашивается подтверждение у
пользователя
Элемент управления не загружается
Когда на Web-странице Вам
встретится незарегистрированный
элемент управления, цифровой сертификат укажет автора элемента управления и предоставит Вам возможность загрузить его.
Маркировка кода ActiveX
Подтвердить пользователям, что элемент управления на Вашей Web-странице безопасен
можно двумя способами. Вы можете гарантировать, что, во-первых, он безопасен для
инициализации и, во-вторых, для использования в сценарии на Web-странице.
Безопасность для инициализации
Элементы управления, которые можно инициализировать в HTML-тегах <PARAM>,
должны быть помечены как безопасные для инициализации до чтения этих тегов
программой просмотра (например, Microsoft Internet Explorer).
Когда Internet Explorer встречает теги инициализации элемента управления, встроенного в
Web-страницу, он выясняет, безопасен ли элемент управления для инициализации.
Результат запроса наряду с выбранным пользователем уровнем безопасности определяет,
будет элемент управления инициализирован или нет.
Безопасность для использования в сценарии
Объектная модель представляет собой иерархию объектов, определяющую структуру
программы,
подчиняющейся
этой
модели.
Объектная
модель
упрощает
программирование, создавая отношения между объектами, составляющими программу.
Когда Вы помечаете элемент управления как безопасный для использования в сценарии.
Вы гарантируете, что объектная модель элемента управления не вызовет проблем с
защитой данных (включая их повреждение или утечку).
Пометив элемент управления как безопасный для использования в сценарии, Вы
ручаетесь, что сценарий не может использовать какие-либо свойства или методы, которые
могли бы повредить компьютеру пользователя. Например, элемент управления,
разрешающий запись информации на жесткий диск, не следует помечать как безопасный
для использования в сценарии.
Под использованием в сценарии подразумевается включение элемента управления в код
сценария (созданного, например, на языке VBScript или JScript), который будет
выполняться на Web-сервере или в программе просмотра Web. Встретив на Web-странице
элемент управления, Microsoft Internet Explorer выясняет безопасность элемента для
использования в сценарии. Результат проверки вместе с выбранным пользователем
уровнем безопасности определяет, будет элемент управления использоваться в сценарии
или нет.
Установка уровня безопасности
Как и в случае подписанных элементов управления, нестандартный уровень безопасности
(см. раздел «Зоны безопасности Internet Explorer» в начале занятия) позволяет решить, как
Internet Explorer должен обходиться с элементами управления.
Параметр
Описание
Enable (Разрешить)
Элементы управления запускаются автоматически
Prompt (Требовать подтверждения) Пользователь должен подтвердить запуск элемента управления
Disable (Запретить)
Элементы управления не запускаются
Технологии защиты
Один из методов обеспечения безопасной передачи данных — аутентификация клиента и
сервера перед началом пересылки данных. Клиент проверяет сервер, к которому он
подключается, точно так же как сервер может выяснить, что за клиент к нему
подключился. Аутентификация поддерживается двумя протоколами.
Слой защищенных сокетов и технология безопасной связи
Слой защищенных сокетов (Secure Sockets Layer, SSL) и технология безопасной связи
(Private Communication Technology, PCT) — это протоколы защиты, основанные на методе
открытых ключей. Программные продукты компании Microsoft используют их в виде
динамической библиотеки поддержки защищенного канала Schannel.dll. Оба протокола
применяются программами просмотра и серверами Интернета для взаимной
аутентификации и обеспечения целостности и конфиденциальности сообщений.
Сертификаты
Идентификация клиентов и серверов осуществляется посредством сертификата,
установленного на компьютере. Web-сервер (или программа просмотра), устанавливая
соединение, выполняет аутентификацию с использованием этого сертификата.
Аутентификация сервера
Internet Explorer (клиентская программа) аутентифицирует сервер Интернета, если
последний на стадии инициализации соединения по защищенному каналу SSL/ PCT
заявляет о наличии сертификата. Программа-клиент принимает сертификат сервера,
проверив криптографические подписи сертификата.
Аутентификация клиента
SSL 3.0 и РСТ 1.0 поддерживают также аутентификацию клиента. Аутентификация
клиента при помощи сертификатов с открытыми ключами — одна из первых стадий
создания защищенного канала между клиентом и сервером.
Резюме
Пользователи вправе обезопасить себя от таких неприятностей, как повреждение данных
или их утечка при загрузке Web-страниц. Например, пользователи Internet Explorer
контролируют загружаемый материал посредством уровней безопасности.
Разработчики могут снабжать свои элементы управления ActiveX цифровыми подписями
или маркировать их как безопасные для применения пользователями в сценарии. Наличие
подписи у элемента управления гарантирует, что загружаемый код разработан
квалифицированным разработчиком и не был случайно поврежден или преднамеренно
изменен. Маркировка элемента управления как безопасного для инициализации или для
использования в сценарии гарантирует, что его можно использовать на Web-странице.
Встретив на Web-странице элемент управления, Microsoft Internet Explorer выясняет, не
повредит ли он данные при инициализации или при включении в сценарий. Результат
проверки и выбранный пользователем уровень безопасности определяют, будет ли
использован элемент управления. Все это помогает защитить пользователя от загрузки
неисправного или опасного кода.
Для безопасной передачи данных применяется аутентификация клиента и сервера. Слой
защищенных сокетов и технология безопасной связи — это протоколы, используемые
программами просмотра и серверами Интернета для выполнения взаимной
аутентификации и обеспечения целостности и конфиденциальности сообщений.
Документы ActiveX
Документ ActiveX — это форма, которую можно включить в контейнер документа
ActiveX, например Office Binder и Internet Explorer. Документы ActiveX разрабатывают
точно так же, как формы в Visual Basic. Они могут содержать внедренные объекты
(например, сводные таблицы Microsoft Excel), окна сообщений и подчиненные формы. На
этом занятии Вы познакомитесь с документами ActiveX и их возможностями, которые
позволяют пользователям интегрировать в состав своих приложений компоненты,
обеспечивающие просмотр HTML-и ActiveX-документов.
Цель:


объяснить, чем обычный документ отличается от документа ActiveX;
описать возможности документа ActiveX.
Функции документов ActiveX
Слово «документ» в сочетании с «ActiveX» может ввести в заблуждение. Документ
ActiveX вовсе не обязан быть статичным, как обычные документы (например, Microsoft
Word) — напротив, он объединяет функциональность приложения с гибкостью документа.
Открыв его, пользователь получает доступ ко всем функциональным возможностям
приложения и, кроме того, может сохранять и распространять копии данных приложения.
Например, документ Word — не то же самое, что приложение Word. Первый имеет
расширение .doc и содержит информацию, а второй (WinWord.ехе) создает документ на
основе этой информации.
Кроме того, документ Word можно просматривать в других контейнерах — например, в
Internet Explorer. В этом случае приложение Word предоставляет объекты (в частности,
меню и панели инструментов), обеспечивающие Internet Explorer возможностями
активизации просмотра и документа. Так же работают и документы ActiveX, созданные в
Visual Basic.
Документы ActiveX в Интернет-приложениях
Используя документы ActiveX, Вы можете разрабатывать приложения, тесно
интегрированные с другими элементами Вашего узла интрасети или Интернета. Связав
эти компоненты. Вы обеспечите пользователям возможность перемещаться между HTMLстраницами и документами ActiveX, не предпринимая каких-либо дополнительных
действий.
Приложения для Интернета
По сути, документы ActiveX — это приложения Visual Basic для Интернета. Почти все,
что Вы сейчас делаете средствами стандартных приложений, доступно и с помощью
документов ActiveX.
Как и элементы HTML-страницы, документы ActiveX, не установленные на компьютере
пользователя, могут автоматически загружаться при первой попытке использовать их.
Более того, возможно и их обновление, если на сервере имеется свежая версия.
Ниже перечислены методы, обеспечивающие установку компонентов, перемещение
между документами и сохранение данных с помощью документов ActiveX.

Автоматическая загрузка компонентов из Интернета: Вы можете создать ссылку на
Ваш документ ActiveX, посредством которой программу просмотра автоматически найдет
и загрузит все компоненты, необходимые для активизации документа.

Объект Hyperlink: его свойствами и методами можно пользоваться в контейнере,
работающем с гиперссылками, для перехода к указанному ресурсу или перемещения по
списку ранее посещавшихся адресов.

Объединение меню: как и в случае с документами Microsoft Word или Microsoft
Excel, меню документов Visual Basic ActiveX можно встраивать в меню программы
просмотра. Например, когда документ загружается в Internet Explorer, в меню программы
просмотра добавляются команды меню Вашего документа ActiveX.

Объект PropertyBag: при использовании документа ActiveX в Internet Explorer Вы
можете с его помощью сохранять данные.
Резюме
Документ ActiveX — это форма, которую Вы вправе включить в контейнер документа
ActiveX. Он может содержать внедренные объекты (например, сводные таблицы Microsoft
Excel), окна сообщений и подчиненные формы. Документы ActiveX предоставляют
пользователю доступ ко всем функциональным возможностям приложения и, кроме того,
позволяют сохранять и распространять копии данных приложения. Объекты Hyperlink и
PropertyBag, объединение меню, автоматическая загрузка компонентов из Интернета —
вот некоторые возможности, которыми Вы вправе снабдить свои документы ActiveX.
Кодовые компоненты ActiveX
Кодовые компоненты ActiveX (ранее — OLE-серверы) — это библиотеки объектов,
реализующие простой метод повторного использования кода. Библиотеки процедур могут
использоваться и в других приложениях (например, Microsoft Office), в состав которых
входит Microsoft Visual Basic for Applications. На этом занятии Вы узнаете о двух методах
реализации кодовых компонентов ActiveX.
Цель:

описать два способа реализации кодовых компонентов ActiveX;

создать динамическую библиотеку ActiveX средствами Visual Basic и
воспользоваться ею в другом приложении;

объяснить, как работает исполняемый файл ActiveX;

описать сходства и различия однократно и многократно используемых
компонентов.
Автоматизация и ActiveX
Компоненты кода ActiveX предоставляют свои функциональные возможности
приложениям-клиентам посредством OLE-автоматизации (OLE Automation). Клиентская
программа
использует
код
компонента, создавая объекты и
обращаясь к их свойствам и
методам; необходимые клиенту
функциональные
возможности
обеспечивает
компонент-сервер.
Некоторые компоненты, в том
числе и Microsoft Access, могут
работать в обоих качествах: и как
клиент, и как сервер. Однако чаще
всего отдельно взятый компонент
не
способен
одновременно
исполнять обе роли.
Автоматизация позволяет одному
приложению
манипулировать
объектами другого приложения. Она основана на модели многокомпонентного объекта
(Component Object Model, СОМ), способного предоставлять свои функции другим
объектам или приложениям. Подобная «прозрачность» позволяет клиентам
непосредственно обращаться к объектам и применять их инструментарий. Например,
текстовый процессор «открывает» свои функции проверки орфографии, чтобы ими могли
пользоваться другие программы. Тем самым посредством автоматизации разработчики
вправе расширять возможности своих программ за счет уже готовых функций других
приложений.
Автоматизация позволяет интегрировать два или более компонентов так, что для
пользователя они будут выглядеть как единое целое. В результате с ними и можно
работать как с одним объектом, поскольку нет никаких ограничений на запрос и
установку свойств объекта-сервера и применение его методов.
Динамические библиотеки ActiveX
Компонент может работать как в пределах процесса (in-process), так и вне его (out-ofprocess). Внутрипроцессный компонент — динамическая библиотека ActiveX —
выполняется в рамках процесса другого приложения. В качестве клиента может выступать
как внешнее приложение, так и другой Внутрипроцессный компонент, используемый
приложением. Все элементы управления ActiveX являются внутрипроцессными
компонентами.
Исполняемые компоненты ActiveX
Исполняемые компоненты ActiveX работают в своем адресном пространстве, а их
клиентами обычно являются приложения, работающие в рамках другого процесса. Так как
внепроцессные компоненты реализуются в своем процессе, клиент может сделать запрос
серверу и продолжить свою работу, пока компонент-сервер будет выполнять запрос. При
правильной настройке подобной системы компонент посылает асинхронное сообщение
клиенту, чтобы уведомить того о выполнении порученной ему работы.
Однократно и многократно используемые компоненты
Однократно используемые компоненты позволяют другим приложениям создавать
объекты, причем каждый из них при этом является новым экземпляром компонента. В
роли однократно используемых компонентов могут выступать только исполняемые файлы
ActiveX, тогда как динамические библиотеки ActiveX всегда служат многократно
используемыми компонентами.
Многократно используемые компоненты позволяют другим приложениям создавать
объекты на основе своих классов, причем этим способом можно создать любое
количество объектов. Внепроцессный компонент вправе предоставить несколько объектов
разным клиентам, а внутрипроцессный компонент — несколько объектов клиенту и
любым другим компонентам, работающим в рамках того же процесса. Как исполняемые
компоненты, так и динамические библиотеки ActiveX при необходимости служат
многократно используемыми компонентами.
Резюме
Кодовые компоненты ActiveX — это библиотеки объектов, предлагающие простой метод
повторного использования кода. Они предоставляют свои функциональные возможности
приложениям-клиентам посредством OLE-автоматизации. Автоматизация обеспечивает
одному приложению возможность манипулировать объектами, реализованными в другом
приложении. Компоненты бывают внутрипроцессными и внепроцессными. Первые —
динамические библиотеки ActiveX — выполняются в процессе другого приложения, тогда
как исполняемый файл ActiveX работает в своем адресном пространстве.
Download