Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции 2005 / P4 / Реализации трехуровневой архитектуры.doc
Скачиваний:
43
Добавлен:
16.04.2013
Размер:
246.27 Кб
Скачать

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

Клиент

Сервер 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(InterfaceDefinitionLanguage). ВDCOMимеется языкMIDL(MicrosoftIDL). При помощи этого языка генерируются бинарные интерфейсы стандартного формата.

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

Бинарный

интерфейс

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

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

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

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

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

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

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

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

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

Прототипы С

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

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

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