Обзор технологии CORBA

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

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

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

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

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

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

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

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

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

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

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

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

Один из ключевых принципов архитектуры CORBA, обеспечивающий интероперабельность приложений, заключается в независимости спецификации интерфейсов объектов от их реализации. Именно для решения этой задачи в комплексе стандартов CORBA предусматривается специальный язык для определения интерфейсов - OMG IDL (Interface Definition Language).

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

Для описания синтаксиса языка в спецификациях стандарта CORBA используется нотация, аналогичная EBNF (Extended Backus-Naur Format - Расширенный формат Бэкуса-Наура).

::= - является по определению

| - или

< > - нетерминальный символ, представляемый заключенным в скобки понятием

"текст" - литерал

* - возможность повторения предшествующей синтаксической конструкции нуль или более раз

+ - возможность повторения предшествующей синтаксической конструкции один или более раз

{ } - заключенные в скобки синтаксические конструкции рассматриваются как единая конструкция

[ ] - заключенная в скобки синтаксическая конструкция является необязательной.

При отображении IDL в различные языки программирования CORBA требует, чтобы конструкции IDL были адекватно отображены: все базовые и конструируемые типы, ссылки на объекты и константы, определяемые в IDL, вызовы операций, исключительные ситуации, доступ к атрибутам, сигнатуры операций в виде, определенном ORB (интерфейс динамического вызова). Реализация отображения дает возможность программисту иметь доступ ко всем функциям ORB в виде, удобном для соответствующего языка программирования. Все реализации ORB должны следовать стандарту OMG отображения для конкретного языка программирования.

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

К настоящему времени OMG определены отображения IDL в языки C, C++ и Smalltalk. Завершается разработка стандарта отображения IDL в язык Ada. Эта работа не проста. Так, только обсуждение и принятие отображения IDL в С++ заняло более двух лет напряженной работы, подтвердившей важность технологии принятия стандартов, используемой OMG [10].

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

Интероперабельность брокеров поддерживается Универсальным Межброкерным Протоколом (General Inter-ORB Protocol, сокращенно GIOP). GIOP является универсальным, поскольку он не зависит от конкретной сетевой транспортной среды и может быть отображен в любой транспортный протокол, поддерживающий виртуальные соединения. Одно из таких отображений - отображение GIOP в протокол TCP/IP - определено CORBA 2.0 в качестве Межброкерного Протокола Internet (Internet Inter-ORB Protocol, сокращенно IIOP). Назначение протокола GIOP/IIOP заключается в том, чтобы поддержать сети брокеров в рамках Internet и за ее пределами.

Согласно GIOP, внутренняя архитектура брокеров предполагается неизвестной. Подход, который может быть выбран конкретным брокером для поддержки GIOP/IIOP, не определяется. Все, что требуется для согласованного включения брокера в компьютерную сеть, - это существование связанных с ним компонентов, способных посылать и принимать сообщения IIOP.

Спецификация GIOP включает:

1) определение Общего представления данных (Common Data Representation - CDR), являющегося, по существу, коммуникационным синтаксисом, отображающим значения типов данных OMG IDL в формат передачи данных между брокерами и межброкерными мостами (агентами);


Страница: