Базовые объектные архитектуры распределенных систем. Технологии .NET, (D)COM+, CORBA, EJB
Базовые технологии. Сравнение на понятийном уровне
Функции CORBA и COM - это функции промежуточного middleware программного обеспечения объектной среды. Функциональность объекта предоставляется клиенту посредством обращения к абстрактным интерфейсам. Интерфейс определяет набор методов, присущие данному классу объектов. Клиент получает доступ к объекту только путем вызова метода, определенного в интерфейсе объекта, но детали реализации скрыты от клиента. Реальные действия выполняются в адресном пространстве объекта, возможно, удаленном по отношению к процессу клиента. Сокрытие деталей реализации и определяет независимость от платформы и языка программирования.
В обеих технологиях взаимодействие между клиентским процессом и сервером объекта, то есть процессом, который порождает и обслуживает экземпляры объекта, осуществляется за счет удаленного вызова процедур (RPC, remote procedure call). Механизм RPC реализует схему передачи сообщений, в соответствии с которой в распределенном клиент-серверном приложении процедура-клиент передает специальное сообщение с параметрами вызова по сети в удаленную серверную процедуру, а результаты ее выполнения возвращаются в другом сообщении клиентскому процессу.
Для этого на стороне клиента и на стороне сервера поддерживаются специальные компоненты, носящие название клиентский и серверный суррогаты (client stub и server stub). Для вызова метода объекта клиент обращается к клиентскому суррогату, который упаковывает аргументы в сообщение-запрос и передает их на транспортный уровень соединения. Серверный суррогат распаковывает полученное сообщение и в соответствии с переданными аргументами вызывает нужный метод объекта. В СОМ клиентский суррогат называется proxy, а серверный - stub. В CORBA клиентский суррогат не имеет специального названия, а серверный обозначают термином skeleton.
Параметры вызова могут формироваться в отличной от серверной языковой и операционной среде, поэтому на клиентский и серверный суррогаты возлагаются функции преобразования аргументов и результатов в универсальное, не зависящее от конкретной архитектуры представление. Тем самым достигается возможность взаимодействия клиента и сервера на различных платформах.
Понятие о технологии (D)COM(+)
(D)COM(+): COM, DCOM, COM+. COM (Component Object Model) - Объектно-Компонентная Модель (1993). D - distributed (1996).+ - 1998.
В СОМ объект характеризуется своим классом. Класс - это реализация некоторого множества интерфейсов. Множественное наследование интерфейсов не поддерживается, вместо этого объект может иметь несколько интерфейсов одновременно. В СОМ интерфейс может определяться путем наследования другого интерфейса. Для всех интерфейсов существует базовый интерфейс - IUnknown. Для того чтобы перейти от интерфейса базового типа к унаследованному интерфейсу или от одного из интерфейсов объекта к другому, клиент должен вызывать метод QueryInterface, определенный в базовом интерфейсе IUnknown.
Для идентификации классов и интерфейсов СОМ используются те же универсальные уникальные идентификаторы (UUID), которые приняты для идентификации интерфейсов в спецификации DCE RPC. Можно применять и символьные обозначения интерфейса, но затем они должны быть транслированы в надлежащий идентификатор UUID. Объект в СОМ - это экземпляр класса. Клиент получает доступ к объекту с помощью указателя на один из его интерфейсов (interface pointer). Идентификатор класса ссылается на конкретную реализацию, и фактический набор интерфейсов для данной реализации становится окончательно известен только на стадии выполнения. СОМ реализует интеграцию объектов на уровне двоичных кодов.
Microsoft IDL (MIDL) - лишь один из возможных способов определения интерфейсов объекта. В спецификации СОМ подчеркивается, что эта модель реализует интеграцию на двоичном уровне, поэтому все спецификации и стандарты, относящиеся к уровню исходных текстов компонентов рассматриваются как вспомогательные и не могут оказывать решающего влияния на общую архитектуру системы.
COM поддерживает интерфейс динамического вызова (когда интерфейс объекта не известен клиенту на этапе компиляции).
В COM для идентификации объектов используется механизм moniker, который обеспечивает преобразование символьного имени объекта в указатель интерфейса. Этот механизм действует для тех объектов, которые сохраняются в долговременной памяти. Два же активных объекта считаются идентичными, если для них совпадают указатели на интерфейс IUnknown. Для долговременного хранения в СОМ поддерживаются две модели. Первая и изначальная модель предоставляет клиенту возможность управлять хранением объекта. По второй модели Microsoft Transaction Server (MTS) обеспечивает управление хранением со стороны сервера.
В СОМ предусмотрены такие общие службы, как защита ( security ), управление жизненным циклом ( lifecycle managemеnt ), информация о типах ( type information ), именование ( naming ), доступ к базам данных ( database access ), передача данных ( data transfer ), регистрация ( registry ) и асинхронное взаимодействие.
Понятие о технологии CORBA
CORBA (Common Object Request Broker Architecture) - общая архитектура объектных брокеров (общая архитектура посредников передачи запросов объектам). Термином CORBA обозначают технологию, архитектуру и набор спецификаций и стандартов промежуточного программного обеспечения (middleware) объектного типа для создания распределенных программных приложений. Автором архитектуры CORBA является консорциум Object Management Group.
CORBA состоит из 4 основных частей.
- Object Request Broker - брокер (посредник) объектных запросов, является ядром архитектуры CORBA. Это объектная шина, по которой происходит взаимодействие локальных и удаленных объектов. Помимо самого вызова метода удаленного объекта, ORB отвечает за поиск реализации объекта, его подготовку к получению и обработке запроса, передачу запроса и доставку результатов клиенту.
- Object Services - объектные сервисы, реализации объектов, предоставляющие общие для объектно-ориентированной среды возможности: служба имен, служба событий, служба сохранения в долговременной памяти, служба транзакций и так далее.
- Common Facilities - общие средства, это реализации объектов, необходимые для большого числа приложений, например, поддержка составных документов, потоков заданий и так далее.
- Application и Domain Interfaces - прикладные и отраслевые интерфейсы. Прикладные объекты представляют собой реализации объектов для конкретных пользовательских приложений. В CORBA есть также понятие домена. Реализации объектов домена (CORBA domains) предназначены для приложений с вертикальной организацией.
В CORBA интерфейс объекта задается с помощью языка описания интерфейсов (Interface Definition Language, IDL). Тип объекта - это тип его интерфейса. Интерфейс идентифицируется именем, представленным цепочкой символов. В модели CORBA определен базовый тип для всех объектов - CORBA::Object. Объект поддерживает тип своего непосредственного интерфейса и по принципу наследования все его базовые типы.
CORBA IDL задает определения, которые могут отображаться в множество различных языков, не требуя при этом никаких изменений от целевого языка. Эти отображения реализуются компилятором IDL.
CORBA вводит понятие объектной ссылки ( object reference ), которая уникальным образом идентифицирует объект в сети.
Механизм долговременного хранения, то есть сохранения состояния объекта в долговременной памяти для дальнейшей его реактивации, в CORBA абсолютно прозрачен для клиента.
Наиболее распространенные службы CORBA - службы именования, управления жизненным циклом и событиями.
CORBA поддерживает интерфейс динамического вызова DII (Dynamic Invocation Interface).
В CORBA изначально была заложена многоплатформенность и поддержка множества популярных языков программирования без необходимости каких-либо изменений в них.