lect9

advertisement
Распределенные
системы
(обзор технологии DCOM)
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
Обеспечение прозрачности местоположения
посредством использования заглушек
Компоненты распределенной архитектуры
COM
Диспетчер управления службами
Диспетчер управления службами (Service Control Manager,
SCM) обеспечивает наличие и готовность сервера к
обслуживанию клиентских запросов в случае их
возникновения.
Когда клиент выполняет запрос на создание определенного
объекта, библиотека COM формирует запрос к локальному
SCM на поиск и запуск требуемого сервера и возврат
фабрики классов. После этого библиотека СОМ или клиент
могут запросить создание объекта посредством фабрики
классов
Диспетчер управления службами
Для внутри процессных (in-process) серверов
SCM возвращает путь к DLL, содержащей реализацию
объекта сервера. После чего СОМ библиотека загружает ее и
запрашивает указатель на интерфейс фабрики классов.
Для локальных серверов
SCM запускает исполнимый модуль, содержащий объект
сервера. Модуль регистрирует указатель на интерфейс
фабрики классов, который возвращается библиотеке СОМ
Для удаленных серверов
Локальный SCM соединяется с SCM на соответствующем
компьютере и переадресует ему запрос. Удаленный SCM
запускает сервер, формирует RPC соединение,
соответствующее фабрике классов сервера и возвращает его
локальному SCM. Локальный SCM передает его библиотеке
COM, которая формирует заместителя (proxy), передающего
запросы к удаленному SCM посредством RPC.
Функционирование SCM
Время жизни объектов
В COM/DCOM объекты уничтожаются, когда на них не остается
ссылок у клиентов. Подсчет ссылок производится посредством
вызова методов addRef() и Release() интерфейса IUnknown.
Следствием этого является невозможность хранения
уникального идентификатора объекта. Потому обращение к
объектам производится посредством ссылки на интерфейс.
Сравнение DCOM и CORBA (ч.1)
CORBA
+ кросплатформенность
+ бОльшая гибкость при создании и управлении объектами
+ лучшая масштабируемость
+ простота настройки для работы в сети Интернет
COM/DCOM
+ не требуется дополнительное ПО для ОС Windows
+ возможность взаимодействия с множеством реализованных
приложений (например MS Office)
Сравнение DCOM и CORBA (ч.2)
DCOM
CORBA
Поддержка множественных
интерфейсов для объектов
Поддержка множественного
наследования на уровне
интерфейсов
Каждый объект реализует
IUnknown
Каждый интерфейс
наследуется от
CORBA.Object
Идентифицирует объект на
сервере посредством
указателя на интерфейс,
который используется как
дескриптор объекта на время
выполнения
Идентифицирует объект
посредством объектных
ссылок. Объектные ссылки
могут быть сохранены в
строку, которая может быть
преобразована в объектную
ссылку
Сравнение DCOM и CORBA (ч.3)
DCOM
CORBA
Идентифицирует интерфейс
с помощью IID
Идентифицирует интерфейс
с помощью имени
интерфейса
Использует протокол Object
Remote Procedure Call
(ORPC) для удаленных
вызовов
Использует протокол Internet
Inter-ORB Protocol(IIOP)
Маппинг имени объекта и его
реализации описывается в
реестре
Маппинг имени объекта и его
реализации описывается в
репозитории реализаций
Сравнение DCOM и CORBA (ч.4)
DCOM
Информация о типах для
различных методов
содержится в библиотеке
типов (type library)
CORBA
Информация о типах для
различных методов
содержится в репозитории
интерфейсов
Поиском реализации объекта Поиском реализации объекта
занимается Service Control
занимается Object Request
Manager (SCM)
Broker (ORB)
За активацию реализации
объектов отвечает Service
Control Manager (SCM)
За активацию реализации
объектов отвечает объектный
адаптер
Сравнение DCOM и CORBA (ч.5)
DCOM
CORBA
Все параметры передаваемые
между клиентом и серверным
объектом задаются в
определении интерфейса. В
зависимости от определения
могут передаваться по ссылке
или по значению
При передаче параметров
между клиентом и удаленным
объектом все интерфейсные
типы передаются по ссылке, все
остальные объекты – по
значению (включая сложные
типы данных)
Каждый вызов возвращает
структуру типа HRESULT, в
которой содержится
возвращаемый статус для более
полной обработки искл.
ситуаций используются объекты
Error. При этом сервер должен
реализовать интерфейс
ISupportErrorInfo
Обработка искл. ситуаций
производится с помощью
объектов Exception. Когда
удаленный объект создает
объект Exception, ORB
прозрачно доставляет его
клиенту.
Download