Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции1_4.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
815.62 Кб
Скачать

Распределенные системы (обзор технологии dcom)

DCOM (Distributed Component Object Model) – распределенная компонентная объектная модель. Является набором концепций и программных интерфейсов, разработанных компанией Microsoft, посредством которых клиент может запросить тот или иной сервис у серверного объекта, расположенного на другом компьютере в сети. DCOM основан на компонентной объектной модели (COM).

COM

COM (Component Object Model) – объектно-ориентированная программная модель компании Microsoft, определяющая методы взаимодействия объектов с приложением. В модели COM клиентское программное обеспечение получает доступ к объекту посредством указателя на интерфейс. Содержащего таблицу указателей на методы интерфейса.

Интерфейсы в com

Указатель на интерфейс - это указатель на указатель на массив указателей на функции интерфейса

Пример описания интерфейса на midl

[

uuid(F3792A83-69C9-11D2-AC8C-525400DDA17A),

helpstring("Этот интерфейс определяет методы работы со стеком.")

]

interface IStack : IUnknown

{

HRESULT Push([in] VARIANT Val);

HRESULT Pop([out, retval] VARIANT *pVal);

}

Каждый интерфейс имеет уникальный идентификатор IID (interface identifier)

Все объекты реализуют стандартный интерфейс IUnknown

Модель клиент-серверного взаимодействия в COM

Создание объекта в COM посредством фабрики классов

COM сервера

В СОМ существует два типа серверов:

- dll based (основанные на динамических библиотеках) – сервер реализуется в виде модуля, который может быть загружен клиентом и выполняется в адресном пространстве клиента

- exe based (основанные на выполнимых модулях) – реализуются в виде самостоятельных исполнимых модулей

Обеспечение прозрачности местоположения посредством использования заглушек

Компоненты распределенной архитектуры COM

Диспетчер управления службами

Диспетчер управления службами (Service Control Manager, SCM) обеспечивает наличие и готовность сервера к обслуживанию клиентских запросов в случае их возникновения.

Когда клиент выполняет запрос на создание определенного объекта, библиотека COM формирует запрос к локальному SCM на поиск и запуск требуемого сервера и возврат фабрики классов. После этого библиотека СОМ или клиент могут запросить создание объекта посредством фабрики классов

  • Для внутри процессных (in-process) серверов

  • SCM возвращает путь к DLL, содержащей реализацию объекта сервера. После чего СОМ библиотека загружает ее и запрашивает указатель на интерфейс фабрики классов.

  • Для локальных серверов

  • SCM запускает исполнимый модуль, содержащий объект сервера. Модуль регистрирует указатель на интерфейс фабрики классов, который возвращается библиотеке СОМ

  • Для удаленных серверов

  • Локальный SCM соединяется с SCM на соответствующем компьютере и переадресует ему запрос. Удаленный SCM запускает сервер, формирует RPC соединение, соответствующее фабрике классов сервера и возвращает его локальному SCM. Локальный SCM передает его библиотеке COM, которая формирует заместителя (proxy), передающего запросы к удаленному SCM посредством RPC.