Смекни!
smekni.com

Обзор технологии CORBA (стр. 1 из 3)

Содержание

Введение............................................................................................................................................ 3

1. Брокер Объектных Заявок......................................................................................... 4

2. Язык определения интерфейсов.......................................................................... 7

3. Сетевая модель CORBA................................................................................................. 8

4. Объектная модель CORBA........................................................................................... 9

5. Клиенты и серверы CORBA....................................................................................... 10

6. Стабы и скелетоны...................................................................................................... 10

7. Основные объектные службы CORBA............................................................. 11

8. Универсальные средства CORBA........................................................................ 13

Заключение.................................................................................................................................. 15

Список использованных источников..................................................................... 16

Введение

CORBA (Common Object Request Broker Architecture) – Общая Архитектура Брокера Объектных Запросов - это стандарт, набор спецификаций для промежуточного программного обеспечения (ППО, middleware) объектного типа. Задача ППО, как известно, заключается в связывании программных приложений для обмена данными. Эволюция ППО - это путь от программ передачи информации между конкретными приложениями, через средства импорта- экспорта данных и организацию мостов между некоторыми приложениями, через SQL, RPC (Remote Procedure Call), TP мониторы (Transaction Proceesing) обработки транзакций, Groupware - управление различными неструктурированными данными (тексты, факсы, письма электронной почты, календари и т.д.) и, наконец, MOM - Message-Oriented Middleware (асинхронный обмен сообщениями между сервером и клиентом), к созданию распределенных компьютерных систем. Элементы этих систем могут взаимодействовать друг с другом как на одной локальной машине, так и по сети. CORBA позволяет организовать единую информационную среду, элементы которой могут общаться друг с другом, вне зависимости от их конкретной реализации, "прописки" в распределенной системе, платформы и языка их реализации [1]. CORBA образует нижний слой архитектуры промежуточного слоя, обеспечивающий технологическую платформу интероперабельности. Семантика объектов на этом уровне не принимается во внимание [8].

1. Брокер Объектных Заявок

Брокер Объектных Заявок (Object Request Broker – ORB) - это промежуточное ПО, которое устанавливает клиент-серверные отношения между объектами в распределенной компьютерной среде [1]. ORB обеспечивает механизмы, позволяющие объектам посылать или принимать заявки, отвечать на них и получать результаты, не заботясь о положении других объектов в распределенной среде и способе их реализации. ORB отвечает за поиск реализации объекта-сервера для выполнения заявки, подготовку реализации этого объекта к приему заявки и за передачу данных, являющихся результатом выполнения заявки [8]. Брокер представляет собой механизм, позволяющий объектам выдавать заявки и получать ответы прозрачным образом. Благодаря этому обеспечивается интероперабельность между приложениями на различных аппаратных платформах в неоднородных распределенных средах. Необходимо подчеркнуть, что речь идет здесь о технической интероперабельности в том смысле, как это понятие интерпретируется в [3].

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

Интероперабельность брокеров трактуется OMG как способность объекта-клиента, управляемого брокером-1, вызывать определенные IDL-спецификациями операции объекта-сервера, управляемого брокером-2, при условии, что брокер-1 и брокер-2 были разработаны независимо друг от друга. Иначе говоря, такие вызовы должны быть независимы от того, одним и тем же или разными (возможно, разнотипными) брокерами поддерживаются взаимодействующие объекты.

CORBA определяет среду для различных реализаций ORB, поддерживающих общие сервисы и интерфейсы (рис.1). Это обеспечивает мобильность клиентов и реализаций объектов по отношению к различным реализациям ORB. ORB обеспечивает интероперабельность компонентов глобального объектного пространства. Определения интерфейсов объектов могут быть помещены в Репозитарий Интерфейсов (Interface Repository) двумя способами: статически - в результате спецификации на IDL, или динамически. Репозитарий представляет компоненты интерфейса как объекты и обеспечивает доступ к ним в период выполнения.


При формировании заявки клиент может использовать интерфейс динамического вызова или генерируемый компилятором IDL стаб (stub) - локальную процедуру вызова заданной операции при обращении к ней.

Клиент может непосредственно взаимодействовать с ORB. В этом случае ORB ищет соответствующий код реализации объекта, пересылает ему параметры заявки и передает управление. Реализация объекта принимает параметры заявки через сгенерированный компилятором IDL скелетон (Skeleton) и при этом может обращаться к Объектному Адаптеру (Object Adaptor) и ORB [8]. Основная функция объектного адаптера, используемого для реализации CORBA-объекта, - обеспечение доступа к сервисам брокера объектных запросов. Объектный адаптер предоставляет все низкоуровневые средства для связи объекта с его клиентами. В число этих средств входят:

1) генерация ссылок на удаленные объекты,

2) вызов методов, определенных в IDL,

3) обеспечение безопасности взаимодействия,

4) активация и деактивация объектов,

5) установление соответствия между ссылками на удаленные объекты и реальными экземплярами объектов,

6) регистрация объектов.

Спецификация OMG CORBA определяет базовый объектный адаптер, который должен быть реализован во всех брокерах запросов. Basic Object Adapter (BOA) - это набор интерфейсов для создания ссылок на удаленные объекты, регистрации объектов, авторизации запросов и активизации приложений. Базовый объектный адаптер является решением первоочередной задачи обеспечения связи между реализацией объекта и брокером запросов. Для организации взаимодействия между ORB и, например, системой управления базами данных должен быть разработан свой объектный адаптер [10].

Скелетон – серверная программа, которая связывает сервант с объектным адаптером, позволяя объектному адаптеру перенаправлять запросы к соответствующему серванту. При статических методах вызова скелетон формируется при компиляции IDL кода. При динамических – не используется[12].

В структуре ORB выделяется Ядро, обеспечивающее внутреннее представление объектов и передачу заявок, и набор надстраиваемых компонентов, интерфейсы которых маскируют различия в реализации ORB. Задачей Ядра является обеспечение мобильности программ и спецификаций типов, а также достижение интероперабельности компонентов в распределенной неоднородной среде. Клиенты максимально мобильны и должны работать без изменения исходного кода в среде любого ORB, который поддерживает отображение IDL в соответствующий язык программирования.

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

Для определенного языкового отображения обеспечивается программный интерфейс к стабу для каждого типа интерфейса. Стабы осуществляют обращения к ORB, используя скрытые и, возможно, оптимизированные для определенного ядра ORB интерфейсы. Для определенного языкового отображения и, возможно, в зависимости от используемого Объектного Адаптера будет обеспечиваться доступ к методам, реализующим каждый объектный тип. Вызов этих методов осуществляется через скелетон. Наличие скелетона не подразумевает существование соответствующего стаба клиента. Возможно, и обратное. Можно написать Объектный Адаптер, который не использует скелетоны для вызова методов реализации объектов [10].

Доступно широкое множество способов реализации конкретных ORB-ов. Далее будут приведены примеры таких реализаций. Следует иметь ввиду, что конкретный ORB может быть реализован сразу несколькими способами.

ORB, включаемый в клиентское и серверное приложение.

Если имеется подходящий механизм коммуникаций, то возможна реализация ORB-а в виде набора подпрограмм как со стороны клиента, так и со стороны реализации объекта. Вызовы методов могут транслироваться в работу со средствами взаимодействия процессов (Inter Process Communication - IPC).

ORB, выполненный в виде сервера.

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

ORB как часть системы.

Для повышения надежности, защиты данных и достижения лучшей производительности ORB может быть реализован как часть операционной системы. При этом ссылки на объект могут быть сделаны постоянными, таким образом уменьшая время, необходимое для обработки каждого запроса. При реализации ORB-а как части операционной системы возможны всевозможные виды оптимизации, такие как избежание кодирования и декодирования данных, если клиент и сервер находятся на одной и той же машине.

ORB, основанный на библиотеках.

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