Введение
CORBA (Common Object Request Broker Architecture) - это
стандарт, набор спецификаций для
промежуточного программного
обеспечения (middleware) объектного типа
. Задача ППО, как известно, и
заключается в связывании
программных приложений для обмена
данными. Эволюция ППО - это путь от
программ передачи информации между
конкретными приложениями, через
средства импорта- экспорта данных и
организацию мостов между
некоторыми приложениями, через SQL,
RPC (Remote Procedure Call), TP мониторы (Transaction
Proceesing) обработки транзакций, Groupware -
управление различными
неструктурированными данными
(тексты, факсы, письма электронной
почты, календари и т.д.) и, наконец, MOM
- Message-Oriented Middleware (асинхронный обмен
сообщениями между сервером и
клиентом), к созданию
распределенных компьютерных
систем. Элементы этих систем могут
взаимодействовать друг с другом
как на одной локальной машине, так и
по сети. CORBA позволяет организовать
единую информационную среду,
элементы которой могут общаться
друг с другом, вне зависимости от их
конкретной реализации,
"прописки" в распределенной
системе, платформы и языка их
реализации.
Основополагающими документами
для CORBA являются два - "The Common Object
Request Broker: Architecture and Specification" и
"CORBAservices: Common Object Services Specification".
Первый описывает все основы CORBA, а
также многие вполне конкретные
вещи, составляющие фундамент CORBA, в
том числе:
- IDL язык описания интерфейсов.
- Dynamic Invocation Interface (DII) позволяет
клиенту обращаться к объектам,
которые были неизвестны или
недоступны ему на стадии
компиляции.
- Dynamic Skeleton Interface (DSI), позволяющий
динамически перенаправлять
приходящие от клиентов запросы
уже на стороне сервера - от ORB-а
конкретному объекту. Надо
заметить, что динамические DII и
DSI не рекомендуется применять
без особой надобности, так как
они заметно медленнее
статических.
- Portable Object Adaptor (POA). Данная
спецификация преследует своей
целью создавать приложения,
которые могут легко
переноситься между ORB-ами
разных производителей.
- Interface Repository - хранилище
спецификаций объектов,
заданных IDL текстами.
- В CORBA 2.0 и выше много внимания
уделено вопросам интеграции.
Спецификация General Inter-ORB Protocol
(GIOP) задаёт общие принципы
удалённого вызова в CORBA,
описывает формат
представления данных (CDR) и
служебных сообщений. Часто
упоминаемый Internet Inter-ORB Protocol (IIOP)
является специализацией GIOP для
сетей TCP/IP. Другим частным
случаем GIOP и заодно Environment Specific
Inter-ORB Protocol является DCE CIOP,
"укутывающий" DCE/RPC.
- Документ описывает также, как
генерировать из IDL исходные
тексты для языков
программирования C, C++, Smalltalk, Cobol
и Java,
- и как интегрировать CORBA с COM и OLE
Automation
- Interceptors описывают стандарт
внедрения между вызывающим и
вызываемым дополнительных
агентов.
Документ "CORBAservices"
перечисляет базовый набор сервисов
(интерфейсов), которые неплохо было
бы иметь для того, чтобы можно было
надстраивать над ними прикладные
сервисы. Знать 15 сервисов,
описанных в данном документе очень
полезно, так как за абстрактной
"поддержкой CORBA" тем или иным
производителем могут скрываться
совершенно различные вещи. Сервисы
эти разной степени важности, но, так
или иначе, вот они:
- Naming - базовая служба имён.
Иерархического вида каталог
доступных в сети сервисов.
Здесь надо быть внимательным -
некоторые поставщики CORBA
используют для реализации
данной службы каталог DCE/CDS, что
не возбраняется, однако
требует, как минимум, его
наличия. Вообще стандарт не
запрещает использовать для
реализации Naming Service любую
существующую службу каталогов.
- Event Service описывает возможности
асинхронного взаимодействия, в
том числе "активного
сервера"
- Persistent Object Service - описывает то,
каким образом состояние
объекта может быть сохранено, а
затем восстановлено.
- Life Cycle Service. Учитывает моменты,
порождённые тем, что объект в
течение своего жизненного
цикла может перемещаться между
компьютерами.
- Concurrency Control Service. Специфицирует
регулировку доступа к объекту
в конкурентном режиме.
Механизм - разные типы
блокировок.
- Externalization Service описывает способ
представления состояния
объекта в виде потока данных.
Это используется при
сохранении в файл или
перемещениях между областями
памяти.
- Relationship Service. Возможность
непосредственного
представления отношений между
объектами по образу и подобию
классической ER модели Чена.
- Transaction Service. Очень важный
сервис. Его наличие и
отсутствие в реализации CORBA и
есть грань между
объектно-ориентированным
монитором транзакций и просто
объектным брокером запросов.
Object Transaction Service отвечает за
демаркацию транзакций,
координацию множества
объектов, которые могут быть
вовлечены в транзакцию, в том
числе и объектов,
распределённых по узлам сети.
- Query Service. Даже работа с
коллекциями объектов
предусмотрена стандартом!
Какой язык запросов должен
использоваться, явно не
указано, хотя говорится об
объектных расширениях SQL.
- Licensing Service - управление
лицензированием
- Property Service - возможность
ассоциирования с объектами
свойств, не являющихся
атрибутами объекта.
- Time Service - служба времени
- Security Service - важный вид сервиса,
суть которого, я надеюсь,
понятна
- Trading Object Service - очень интересное
расширение службы имён. Вместо
того, чтобы использовать
точное имя сервиса по Naming Service,
клиент указывает необходимый
ему тип объекта, а trader сам
находит подходящий.
- Object Collection. Регламентирует
базовые операции над
коллекциями объектов.
Помимо вышеупомянутых документов
существует ещё "Common Facilities", а
также огромное количество разной
степени важности бумаг. Достаточно
уже и того, что далеко не всё из
описанного в двух самых важных
реализуется производителями CORBA
или CORBA-совместимых серверов
приложений.
[содержание][вперед]