11
Кроме того, классы СОМ поддерживают наследование интерфейсов, но не поддерживают наследования реализации, т. е. не наследуют код методов, хотя при необходимости объект класса-потомка может вызвать метод родителя.
Каждый интерфейс имеет имя, начинающееся с
символа I и глобальный уникальный идентификатор IID (Interface IDentifier). Любой объект СОМ обязательно реализует интерфейс (Unknown (на схемах этот интерфейс всегда располагают сверху).
Использование этого интерфейса позволяет получить доступ к остальным интерфейсам объекта.
Рисунок 1.8 - Взаимодействие программных компонентов различных типов
Объект всегда функционирует в составе сервера – динамической библиотеки или исполняемого файла, которые обеспечивают функционирование объекта. Различают три типа серверов:
- внутренний сервер: реализуется динамическими библиотеками, которые подключаются к приложению-клиенту и работают в
одном с ними адресном пространстве. Это наиболее эффективный сервер, кроме того, он не требует специальных средств;
- локальный сервер: создается отдельным процессом (ехе), который работает на одном компьютере с клиентом;
- удаленный сервер: создается процессом, который работает на другом компьютере.
Например, Microsoft Word является локальным сервером. Он включает множество объектов, которые могут использоваться другими приложениями.
Взаимодействие клиента и сервера обеспечивается базовыми механизмами СОМ или
DCOM, поэтому клиенту безразлично местонахождение объекта. При использовании локальных и удаленных серверов в
адресном пространстве клиента создается
proxy-объект – заместитель объекта СОМ, а в адресном пространстве сервера СОМ –
заглушка, соответствующая клиенту. Получив задание от клиента, заместитель упаковывает его параметры и, используя службы операционной системы, передает вызов заглушке.
Заглушка распаковывает задание и передает его объекту СОМ. Результат возвращается клиенту в обратном порядке.
Поделитесь с Вашими друзьями: