Статический случай
На языке программирования создаются описания интерфейсов для всех типов объектов, компилируются, чтобы получить код статического скелетона, который затем и линкуется с серверным приложением. Так как скелетон в этом случае обладает полной информацией обо всех операциях, поддерживаемых описываемым интерфейсом, включая количество и типы параметров, он помогает объектному адаптеру перенаправить запрос соответствующему серванту.
Адаптер POA поддерживает два типа статических сервантов.
Серванты, основанные на наследовании. Класс серванта наследуется от абстрактного класса скелетона.
Связанные серванты с использованием делегирования. Этот тип обычно используется, когда наследование невозможно, например, если необходимо множественное наследование, а язык программирования, на котором написано приложение, множественное наследование не поддерживает (Java). Делегирование – передача функциональности другому классу.
Динамический случай
Примером может служить односторонний мост к другим распределенным системам (в частности – СОМ, Сommon Object Model). Клиент СОRВА посылает запрос к объекту, реализованному на СОМ. Когда к системе присоединяются интерфейсы СОМ нового типа, клиенты должны иметь возможность работать с ними без остановки системы и перекомпиляции. Интерфейс Динамических Скелетонов поддерживает такие ситуации и позволяет сервантам в реальном времени определять детали интерфейса и операций, вызывающих конкретный объект. Обычно используется Репозитарий Интерфейсов, который «на лету» предоставляет подробности динамических интерфейсов.
В отличие от Базового Адаптера, в Портируемом Объектном Адаптере предусмотрена многопотоковость. В этой области POA предоставляет следующие возможности.
Для каждого запроса создается отдельный поток.
Для каждого объекта создается отдельный поток.
Для всех запросов создается один общий поток.
Создается пул потоков фиксированного размера для обработки всех запросов.
Выбор конкретной потоковой политики зависит от программных приложений распределенной среды.
На более высоком уровне ORB CORBA 3 предоставляет две модели многопоточности.
ОRВ управляемая – сам ОRВ выбирает подходящую модель работы с потоками. Обработка запросов ведется параллельно.
Однопотоковая модель – гарантирует, что все запросы для всех объектов в РОА будут обрабатываться в одном потоке. Обработка запросов ведется последовательно.
Выбор той или иной модели POA должен быть сделан только после тщательного анализа создаваемой распределенной среды, целей и функций разрабатываемой системы, доступного оборудования. Но зато сколько новых элементов! Среди них менеджеры сервантов, политики РОА, гибкость присвоения индентификатора объекту, устойчивые и временные объекты, возможность хранения связей сервант-объект в Карте Активных Объектов. Можно воплотить любой воздушный замок.
http://kunegin.narod.ru/ref2/corba/index.htm
http://kunegin.narod.ru/ref2/corba/adapter.htm
Т.к. в рамках технологии CORBA данные, которыми обмениваются клиент и сервер рассматриваются как цепочки байтов, клиент должен поместить в буфер запроса свой авторизованный ключ в системах, защищенных от посторонних клиентов.
В CORBA используется язык определения интерфейса IDL, похожий на язык С++. После описания интерфейса в терминах этого языка, компилятор IDL автоматически создает корешок Stub и каркас skeleton. Обмен информацией об интерфейсе между разработчиками программ осуществляется в терминах языка высокого уровня IDL, в то время как компилятор IDL переводит текст описания интерфейса в команды конкретного компилятора. В результате достигается высокая степень независимости обмена данных от аппаратных и программных средств.
Для реализации CORBA в сетевом окружении клиента должен существовать хотя бы один умный агент. Если обмен данными осуществляется в локальной сети, то умный агент устанавливается на машину с SQL-сервером, а если обмен данными идёт через Internet, то умный агент устанавливается в один из узлов глобальной сети. При создании сервера осуществляется автоматическая регистрация объектов в одном или нескольких умных агентах. Т.о. умный агент знает, по каким сетевым адресам находятся сервера. Это повышает надежность системы, т.к. при сбое на одном из серверов Smart Agent может повторить запрос и при повторном сбое переключиться на другой сервер.
Глобальная архитектура системы, построенная по технологии CORBA, восходит к модели, построенной группой управления объектами OMG (Object Management Group), содержит 4 вида архитектурных элементов, связанных с брокером объектных запросов.
Прикладные объекты
Горизонтальные средства
Вертикальные средства
Общие объектные службы
Брокер объектных запросов образует ядро любой распределенной системы, использующей технологию CORBA. Он отвечает за поддержание связи между объектами и клиентом, решая проблемы, связанные с распределенностью и однородностью системы.
Кроме прикладных объектов, которые являются частями конкретного приложения, в модель входят т.н. средства CORBA (CORBA facilities). Это внутренние службы CORBA и делятся они на две группы:
Горизонтальные средства – высокоуровневые службы внешнего назначения, которые не зависят от прикладной области программ, использующих эти службы, следовательно они поддерживают пользовательский интерфейс, управление информацией, системой и задачами.
Вертикальный средства – высокоуровневые службы, предназначенные для конкретных предметных областей: электронная коммерция, банковское дело и т.д.
Основной целью OMG было создание совместимости различных платформ в распределенных системах.
