Объектно-ориентированные технологии распределенной обработки

Модель сервера приложений (AS)

В модели сервера приложений компоненты приложения разнесены на три части. Клиентская часть содержит компонент представления. Серверная часть выполнена аналогично модели доступа к удаленным данным RDA (выполняет SQL-запросы к БД, расположенной на сервере). Третья часть — промежуточная — выступает в роли клиента и сервера одновременно, содержит прикладной компонент и называется сервером приложений. Сервер приложений организован как группа процедур (процессов), выполняющих определенные прикладные функции. Клиент обращается к серверу приложений через API (то есть, посылает идентификатор интересующей его процедуры и набор параметров и ждет получения результата). Функционирующие на сервере приложений процедуры, в свою очередь, обращаются к серверу баз данных (причем, могут использоваться разные сервера). Трехзвенная архитектура позволяет добиться максимальной гибкости при проектировании приложений клиент-сервер.

Сегодня наибольшее применение для разработок приложений распределенной обработки находят две объектно-ориентированные (компонентные) модели— DCOM и COR-BA. Эти технологии реализуют трехуровневую архитектуру модели «клиент-сервер». В основе их лежит модель сервера приложений, которому делегированы полномочия организации взаимодействия клиента и сервера, что обеспечивает возможность интеграции объектов, размешенных на машинах разных платформ и под управлением разных ОС.

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

COM (Component Object Model — объектная модель компонентов) — это технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения на основе взаимодействующих компонентов (COM-компонентов), каждый из которых может использоваться во многих программах одновременно. Технология DCOM (Distributed COM — распределённая COM) позволяет COM-компонентам взаимодействовать друг с другом по сети.

В DCOM-технологии взаимодействие между клиентом и сервером осуществляется через 2-х посредников. Посредник, работающий на стороне клиента называется заместитель (proxy), а посредник, работающий на стороне сервера — заглушка (stub). Объект, с которым работает приложение, размещается на сервере. Заместитель объекта поддерживает точно такой же интерфейс (т.е. имеет одинаковый с ним набор методов). Приложение вместо метода самого объекта вызывает метод заместителя, который, упаковывает его параметры в так называемый COM-пакет и передает его заглушке. Заглушка, в свою очередь, распаковывает параметры и инициирует вызов метода «настоящего» объекта. Точно так же в обратном направлении передается значение, возвращаемое методом. Объект должен быть предварительно зарегистрирован на локальной машине, чтобы клиент с помощью распределенной службы имен (в качестве которой Microsoft предлагает Active Directory) мог его отыскать по глобальному уникальному идентификатору (GUID).

CORBA (Common Object Request Broker Architecture — общая архитектура брокера объектных запросов) — технологический стандарт написания распределённых приложений, продвигаемый консорциумом OMG. Задача CORBA — осуществить интеграцию изолированных систем, дать возможность программам, написанным на разных языках, работающим на разных узлах сети, взаимодействовать друг с другом так же просто, как если бы они находились в адресном пространстве одного процесса.

Основой технологии CORBA является ORB (Object Request Broker, брокер объектных запросов), позволяющий передавать сообщения от одного объекта к другому. Брокер может быть реализован в виде библиотеки, специального сетевого сервиса, объектно-ориентированной СУБД или уже быть включенным в операционную систему. ORB дает возможность не задумываться объектам, которых он обслуживает, о том, где находятся другие объекты, которым передаются сообщения. Кроме того, он скрывает все детали реализации объектов, оставляя снаружи только их интерфейсы.

Схема взаимодействия удаленный объектов CORBA похожа на схему DCOM, но включает промежуточное звено (Smart agent), представляющее собой сетевой каталог известных ему серверов объектов. Регистрация объектов сервера в каталоге одного или нескольких Smart agent'oв происходит автоматически при создании сервера.

На машине клиента создаются два объекта-посредника: заглушка (Stab) брокер ORB. Клиентское приложение вместо самого объекта обращается к заглушке (имеющей тот же интерфейс). Заглушка обращается к брокеру, который посылает широковещательное сообщение в сеть. Smart agent, получив сообщение, отыскивает сетевой адрес сервера данного объекта и передает запрос брокеру, размещенному на машине сервера. Вызов требуемого объекта производится через специальный базовый объектный адаптер (BOA). При этом параметры метода в стек пространства вызываемого объекта помещает особый объект сервера — каркас (Skeleton), который вызывается адаптером.

CORBA имеет два механизма реализации запросов к объектам:

— статический, предполагающий использование заглушек и каркасов, интерфейсы которых были сгенерированы при создании объекта;

— динамический вызов с помощью интерфейса динамического вызова (DII), позволяющего определять объекты и их интерфейсы во время выполнения, а затем формировать заглушки. Аналогично, на стороне сервера может использоваться динамический интерфейс каркасов (DSI), что позволяет обращаться к реализации объекта, для которого на этапе создания не был сформирован каркас.

Ключевым компонентом архитектуры CORBA является язык описания интерфейсов IDL, на уровне которого поддерживаются «контрактные» отношения между клиентом и сервером и обеспечивается независимость от конкретного объектно-ориентированного языка. CORBA IDL поддерживает основные понятия объектно-ориентированной парадиг-мы (инкапсуляцию, полиморфизм и наследование). При этом CORBA-объекты могут быть преобразованы в объекты языков программирования (например, Java, C++), т. е. будут сформированы файлы:

— исходного клиентского кода, содержащего интерфейсные заглушки;

— исходного серверного кода, содержащего каркасы;

— заголовков, которые включаются в клиентскую и серверную программы.

В модели DCOM также может использоваться разработанный Microsoft IDL-язык, который, однако, играет вспомогательную роль и используется в основном для удобства описания объектов. Реальная интеграция объектов в DCOM происходит не на уровне абстрактных интерфейсов, а на уровне бинарных кодов, и это одно из основных различий этих двух объектных моделей.