Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции 2005 / Лекции по ИТС для МП-IV / P4 / Реализации трехуровневой архитектуры.doc
Скачиваний:
143
Добавлен:
16.04.2013
Размер:
246 Кб
Скачать

Процесс клиента

Клиент

Сервер COM

(библ-ка DLL)

COM-объект

В этом варианте обращение к объекту только усложняется по сравнению с обычным обращением к DLL. Выигрыш образуется тогда, когда к тому же серверу будут обращаться другие процессы, в том числе и расположенные на удалённых компьютерах.

2) Клиент и сервер располагаются на одном компьютере, но запускаются в разных процессах, например, можно запустить одновременно Excel и Word. В этом случае сервер представляет собой программу, которая способна реагировать на запросы от Word.

Здесь между клиентом и сервером имеется два промежуточных звена. На стороне клиента функционирует объект Proxy. Его задача - при обращении клиента к СОМ-объекту формировать пакет вызова к серверу, а также принимать данные от сервера и реализовывать, таким образом, интерфейс объекта. Объект Proxy является уполномоченным агентом сервера в среде клиента. В адресном пространстве сервера работает другой посредник — stub (переводится по-разному: заглушка, приемник, поглотитель), stub принимает запросы от одного или нескольких клиентских объектов Proxy, помещает их в стек и вызывает нужные методы объектов на сервере, а затем отправляет клиенту полученный результат.

3) Клиент и сервер - разные программы на различных компьютерах в составе сети. Причем эти компьютеры могут быть аппаратно несовместимы и работать под управлением различных операционных систем. Этот вариант и представляет собой технологию DCOM. Передача данных между компьютерами происходит путем использования стандартных протоколов, например TCP/IP.

Процесс сервер

COM-объект

COM

Клиент

Удаленный компьютер

Процесс сервера

DCOM

Stub

COM-объект

DCOM

Процесс клиента

Proxy

Stub

Реестр Windows

DCOM позволяет процессу клиента работать с объектами, размещенными на другом компьютере. Однако базовый механизм обмена информацией между объектами, принятый в DCOM, по сути, совпадает с соответствующими механизмами COM. Для программиста разница между технологиями COM и DCOM часто скрывается за различными интерфейсами. Грубо говоря, объект DCOM - это просто реализация интерфейса.

Разницу между COM и DCOM можно увидеть в механизме проверки времени жизни объекта создаваемого на сервере. Если в COM используется простой счётчик запросов на создание и освобождение объекта, то в DCOM запросы на освобождение объекта могут быть потеряны в линиях связи. Для борьбы с этой напастью DCOM время от времени рассылает запросы по поводу созданных, но не уничтоженных объектов и если не получает адекватного ответа (либо из-за разрыва линии связи, либо из-за отказа удалённого приложения).

Один объект может реализовывать одновременно несколько интерфейсов, которые является бинарными. Бинарный интерфейс представляет собой таблицу с указателями на реализацию методов, которые является частями интерфейса. Для задания интерфейса используется специальный язык определения интерфейса – IDL (Interface Definition Language). В DCOM имеется язык MIDL (Microsoft IDL). При помощи этого языка генерируются бинарные интерфейсы стандартного формата.

Достоинство бинарных интерфейсов: они не зависят от языка программирования. При использовании другой технологии (например, CORBA) для поддержки нового языка программирования необходимо отображать описание интерфейса на языке IDL в конструкции нового языка программирования. Подобная стандартизация конструкций в случае бинарного интерфейса не нужна.

Бинарный

интерфейс

Спецификация интерфейса на IDL

Компиляция с языка IDL в интерфейс

Таблица указателей на реализацию методов

Интерфейсы, определенные для конкретного

языка программирования

Компиляция с языка IDL в программу на языке программирования

Компилятор языка программирования

Объявление классов Java

Объявление классов C++

Прототипы С

Код программы, зависящий от компьютера

Важная особенность технологии DCOM – все объекты являются нерезидентными, т.е. как только у объекта не остается ссылающихся на него клиентов, этот объект удаляется. Наличие исключительно нерезидентных объектов делает невозможным хранение в каждом из объектов своего уникального глобального идентификатора. По этой причине объекты в DCOM могут вызываться только по указателям на интерфейсы.

Чтобы продлить жизнь объекта, когда его перестает использовать последний клиент, в DCOM применяются сохранные ссылкимоникеры (moniker или monicker: буквально – отметина для нахождения дороги). Моникер может быть сохранен на диске. Он содержит всю информацию, необходимую для воссоздания соответствующего объекта и приведение его в то состояние, которое он имел перед тем, как его перестал использовать последний клиент.