Файл: Технология CORBA (Написание приложения CORBA используя Java).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 12.03.2024

Просмотров: 41

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

(Event Service) Позволяет компонентам, находящимся на шине, реагировать на события в системе.

(Persistence Service) Служба, позволяющая создавать хранилища компонентов в различных средах.

(Concurrency Control Service) Представляет собой механизм, ко­торый позволяет выполнять блокировки от имени транзакций и потоков выполнения.

(Transaction Service) Позволяет организовывать двухфазное за­вершение транзакций для компонентов, при этом имеется возможность работать не только с простыми, но и с вложенными транзакциями.

(Relationship Service) Создает динамические ассоциации между компонентами, не связанными друг с другом.

(Extemalization Service) Обеспечивает стандартный способ для передачи данных компоненту и обратно, а также для пересылки самих компонентов по сети.

(Query Service) Позволяет выполнять запросы для объектов, в ча­стности, находить объекты по свойствам.

(Licensing Service) Позволяет отслеживать использование компо­нентов с целью получения платы.

(Properties Service) Предоставляет доступ к свойствам компонен­тов, позволяет менять состав и значение свойств.

(Time Service) Предоставляет интерфейсы для синхронизации ча­сов в распределенной среде и обеспечивает возможность управлять со­бытиями, привязанными к астрономическому времени.

(Security Service) Позволяет поддерживать инфраструктуру для обеспечения безопасности системы.

(Trader Service) Позволяет опубликовывать предлагаемые серви­сы и находить их.

(Collection Service) Позволяет создавать контейнеры, в которые можно помещать компоненты и формировать из них контейнеры.

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

Горизонтальные включают средства: USER interface (Интерфейс пользо­вателя); Information management (Информационный менеджмент). Воз­действие на систему предполагает большое количество утилит, которые реализуют функции системного администрирования. Управление зада­чами состоит из средств: управления потоками работ, программных агентов, контроля правил, автоматизации.

Обеспечение безопасности CORBA. Систему, которую обеспечи­вает безопасность спроектировали так, чтобы она не могла помешать пользователю во время создания приложений. В теории, объекты, кото­рые вы создали должны контактировать с ORB (который обеспечивает безопасность) без вашего участия. ORB предусматривает все необходи­мое для объектов, которые не знают о существовании сервиса безопас­ности (Security Service) и даже не имеют соответствующих интерфейсов. Это позволяет объектам легко пересекать границы сред, использующих различные механизмы обеспечения безопасности. [8]


Совокупность особенностей CORBA Security Service гарантирует в распределенных средах безопасность уровня B2, близкого к высшему уровню защиты. Чтобы выполнить такой важный уровень при работе в сети, следует составлять идентификатор с каждым клиентом. Для всех ресурсов был создан список прав доступа, обеспечены средства аудита и невозможность передачи прав доступа другим пользователям. Спецификация CORBA позволяет производителям ПО при необходимо­сти снижать уровень безопасности системы. Также CORBA определяет несколько стандартных профилей безопасности для контактирования между различными ORB.

Под «обеспечением безопасности» в CORBA подразумевается ре­шение (или попытка решения) очень многих проблем:

идентификация пользователя;

делегирование привилегий при последовательном вызове объектами методов друг друга;

предоставление прав доступа к ресурсам;

обеспечение аудита;

обеспечение юридической достоверности истории вызовов объектами друг друга;

кодирование передаваемых данных (если необходимо) и взаимодейст­вие с промышленными стандартами кодирования;

создание и администрирование профилей безопасности.

1.3 Использование технологии CORBA

Технология CORBA – стандарт написания распределенных приложений, принадлежащий консорциуму Open Management Group (OMG). Благодаря этой технологии решается задача связывания различных объектов (программных приложений) для обмена данными. Объекты могут взаимодействовать друг с другом не зависимо от реализации и размещения. Клиент при помощи брокера запросов направляет свой запрос на определенный сервер, зная только интерфейс этого сервера. Сервер получает запрос, обрабатывает и направляет ответ клиенту с помощью того же брокера. Преимущества технологии CORBA заключаются кроме того в том, что она делает возможным повторное использование кода без необходимости его переписывать, например, на другой язык программирования. Наследование интерфейсов делает возможным расширение существующего функционала.

Object Request Broker или ORB – брокер объектных запросов, некое промежуточное ПО между объектами. Брокер отвечает за отправку запроса и получения ответа, поиск определенной реализации сервера для выполнения того или иного запроса и подготовку найденного сервера для выполнения запроса. [5]

Таким образом не предполагается осведомленность объектов о положении друг друга в системе. Object Services в CORBA – набор системных сервисов. Они обеспечивают дополнительную функциональность брокера. Например, сервис именования хранит ссылки на объекты системы CORBA (по имени объекта можно получить этот объект). Сервис жизненного цикла определяет управление жизненным циклом компонентов на шине. Сервисы условно можно поделить на две категории: те, которые уже функционируют поверх ORB без дополнительного встраивания, и те, которые необходимо встраивать в брокер отдельно.


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

1. Сервис жизненного цикла. Основополагающий сервис, определяющий жизненный цикл компонентов на шине (создание, удаление, копирование и т.д.).

2. Сервис именования. Выполняет функцию хранения ссылок на объекты. Его задача – идентифицировать тот или иной объект и отдать ссылку на него по запросу.

3. Сервис долговременного хранения. Выполняет функцию сохранения объектов в долговременной памяти.

4. Сервис событий. Основная функция – поддержка асинхронного взаимодействия.

5. Сервис отношений. Предоставляет логические связи между компонентами.

6. Сервис контроля совместного доступа. Занимается управлением разделяемыми ресурсами, доступом к ним.

7. Сервис транзакций. Определяет множество моделей транзакций. 8. Сервис внешнего представления. Копирует объект и представляет его в виде файла, элемента базы данных, т.е. в виде какого-либо внешнего представления.

9. Сервис запросов. Обеспечивает выполнения запросов к объектам.

10. Сервис свойств. Служба, позволяющая ассоциировать свойства с компонентом.

Таким образом, сам брокер объектных запросов иногда не предоставляет полной функциональности без сервисов. Есть некие стандартные сервисы, которые употребляются очень часто и расширяют функциональность брокера. Консорциум OMG стандартизовал такие сервисы. Перейдем к следующему элементу. Основная задача Common Facilities (общих средств) – поддержка интерфейсов сервисов высокого уровня. Общие средства можно поделить на две категории: горизонтальные и вертикальные.

Горизонтальные средства не связаны ни с какой предметной областью, это некие стандартные средства. Вертикальные же используются для конкретной области, например, для финансовых коммуникаций. Application Objects – объекты, о которых упоминалось ранее. Они участвуют в обмене сообщениями при помощи брокера объектных запросов.

Как правило, приложения состоят из нескольких бизнес-объектов. Основная задача здесь – собрать эти объекты в одно целое. Приложения в CORBA можно поделить на клиентов и серверов. Клиенты – это те компоненты, которые обращаются к серверу для выполнения запроса. Сервер – это компонент, который выполняет принятый запрос. [12]

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


Для этой цели существуют стабы и скелетоны (серверные и клиентские заглушки). Стаб (заглушка) действует в адресном пространстве клиентского приложения. Фактически, это пустые реализации для каждого метода интерфейса. Он является неким посредником. Его основная функция – упаковать параметры запроса в специальный формат и передать запрос скелетону сервера (через ORB).

Скелетон действует в адресном пространстве серверного приложения. Его функции: распаковка запроса от клиента и упаковка запроса ответа сервера. В CORBA существует несколько моделей обращений к объектам. При синхронном типе запроса компонент, посылающий запрос, блокируется и ожидает ответ. При одностороннем типе запроса компонент не блокируется, он продолжает работу.

Отложенный синхронный тип запроса предполагает некую совокупность двух предыдущих типов запроса. Здесь отправивший запрос компонент также продолжает работу, как при одностороннем типе запроса, но позднее он может заблокироваться до получения ответа, как при синхронном типе запроса. Универсальный межброкерный протокол (GIOP – General InterORB Protocol) поддерживает интероперабельность брокеров. Этот протокол не зависит от внутренней архитектуры брокера. Для 209 согласованного включения брокера в сеть, необходимо лишь наличие связанных с брокером объектов, которые способны принимать и посылать сообщения IIOP. Данный протокол является своеобразным каркасом.

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

ГЛАВА 2. ОСОБЕННОСТИ ПРОЕКТИРОВАНИЯ CORBA

2.1 Написание приложения CORBA используя Java


Технология Java RMI позволяет существенно упростить разработку рас­пределенных систем. RMI дает возможность выполнять объекты Java на различ­ных компьютерах или в отдельных процессах путем взаимодействия их друг с другом посредством удаленных вызовов методов. Технология RMI основана на более ранней подобной технологии удаленного вызова процедур (RPC) для про­цедурного программирования, разработанной в 80-х годах. RMI представляет собой реализацию RPC на Java для распределенных коммуникационных взаимо­действий. Синтаксис вызова метода идентичен синтаксису вызова методов дру­гих объектов в той же программе. RMI обслуживает маршалинг данных через сеть и дает возможность программам на Java передавать законченные объекты Java с помощью механизма сериализации объектов Java.

На приведенном ниже рисунке изображено распределенное приложение с использованием Java RMI и реестра RMI, чтобы получить ссылку на удаленный объект. Сервер вызывает реестр, чтобы ассоциировать имя с удаленным объек­том. Клиент смотрит удаленный объект по его имени в реестре сервера и затем вызывает метод. На рисунке также показано, что система RMI использует суще­ствующий веб-сервер для загрузки определений классов, от сервера к клиенту и от клиента к серверу, когда это необходимо.

Рис. 2. Распределенное приложение с использованием Java RMI

Java RMI подходит в том случае, если все компоненты распределенного приложения реализованы на базе Java. В случае если необходимо взаимодей­ствие компонентов, разработанных с использованием различных средств, мо­жет быть использована другая технология CORBA. C0RBA представляет собой технологию построения распределенных систем, стандартизованную и поддер­живаемую консорциумом 0MG. Эта технология предоставляет механизмы для описания спецификаций интерфейсов взаимодействующих систем, а также обеспечивает некоторые важные сервисы такие как сервисы именования, со­бытий, транзакций, безопасности и т.д. [3]. Несмотря на то, что C0RBA ис­пользует объектную идеологию, она может применяться в системах программи­рования, не поддерживающих объектный подход. C0RBA означает Common Object Request Broker Architecture (общая архитектура брокера объектных за­просов]. C0RBA позволяет программам на разных языках, работающих в различ­ных узлах сети, взаимодействовать друг с другом так же просто, как если бы они находились в адресном пространстве одного процесса. Задача C0RBA сделать возможной интеграцию изолированных систем. [11]