CORBA ( англ. Common Object Request Broker Architecture - общая архитектура брокера объектных запросов) - это предложенный консорциумом OMG технологический стандарт разработки распределенных приложений.
Задача CORBA - интегрировать распределенные системы, дать возможность программам, написанным разными языками, работать в разных узлах сети и взаимодействовать друг с другом так же просто, как будто они находятся в адресном пространстве одного процесса.
Обзор CORBA
CORBA объединяет программный код в объект, содержащий информацию о функциональности и интерфейсы доступа. Готовые объекты могут вызываться из других программ или расположенных в сети объектов CORBA.
CORBA использует язык описания интерфейсов OMG IDL для определения протоколов взаимодействия объектов с внешним миром. Стандарт CORBA описывает правила отображения IDL в язык реализации объекта: Ada, C, C + +, Lisp, Smalltalk, Java, COBOL, Pl/i и Python. Также существуют нестандартные отображения в Perl, Visual Basic, Ruby и Tcl, реализованные разработанными для них средствами ORB.
Ключевые понятия технологии
Объекты по значению (ОПЗ)
Кроме удаленных объектов в CORBA 3.0 определено понятие ОПЗ. Код методов таких объектов по умолчанию выполняется локально. Если ОПЗ был получен с удаленного стороны, то необходимый код должен либо быть заранее известен обеим сторонам, либо быть динамически загружен. Чтобы это было возможно, запись, определяющая ОПЗ, содержит поле Code Base - список URL, откуда может быть загружен код. В ОПЗ могут также быть и удаленные методы.
В ОПЗ могут быть поля, которые передаются вместе с самим ОПЗ. Они также могут быть ОПЗ, формируя таким образом списки, деревья или произвольные графы. ОПЗ могут иметь иерархию классов, включая множественное наследование и абстрактные классы.
Компонентная модель CORBA (CCM)
Компонентная модель CORBA (CCM) - недавнее дополнение к семейству определений CORBA. CCM была введена начиная с CORBA 3.0 и описывает стандартный каркас приложения для компонент CORBA. CCM построено под сильным влиянием Enterprise Javabeans (EJB) и фактически является его независимым от языка расширением. CCM предоставляет абстракцию сути, которая может предоставлять и получать сервисы через четко определенные именованные интерфейсы, порты.
Модель CCM предоставляет контейнер компонентов, в котором могут поставляться программные компоненты. Контейнер предоставляет набор служб, которые может использовать компонент. Эти службы включают (но не ограничены): службы сообщения авторизации, персистентности и управления транзакциями. Эти службы наиболее часто используемые распределенными приложениями. Перенося реализацию этих сервисов от необходимости реализации самим приложением в функциональность контейнера приложения, можно значительно снизить сложность реализации собственно компонентов.
Общий протокол мижброкернои взаимодействия (GIOP)
GIOP - абстрактный протокол в стандарте CORBA, обеспечивающей Интероперабельность брокеров. Стандарты, связанные с протоколом выпускает Object Management Group(OMG). Архитектура GIOP включает несколько конкретных протоколов:
-
Internet INTERORB Protocol (IIOP) - Межброкерний протокол для Интернет, это протокол для организации взаимодействия между различными брокерами, опубликованный консорциумом OMG. IIOP используется GIOP в среде интернет, и обеспечивает отображение сообщений между GIOP и слоем TCP / IP.
-
SSL INTERORB Protocol (SSLIOP) - это IIOP поверх SSL, поддерживаются шифрование и аутентификация.
-
Hypertext INTERORB Protocol (HTIOP) - это IIOP поверх HTTP.
Corba Location
Corbaloc - это сокращение от Corba Location и является строчным ссылкой на объект CORBA и выглядит похоже на URL.
Все реализации CORBA должны поддерживать как минимум два варианта определенный OMG URL: corbaloc: и corbaname:. Их назначение в том, чтобы предоставить человеку возможность читать / редактировать ссылку, с помощью которого можно получить IOR.
Вот пример corbaloc:
corbaloc::160.45.110.41:38693/standardns/nameserver-poa/_root
Реализация CORBA может предоставлять поддержку форматов «http:», «ftp:» и «file:». Назначение этих форматов в том, чтобы указать способ, откуда взять строковое представление IOR.