Язык описания интерфейсов в системе CORBA
Для задания взаимодействия объектов в системе CORBA используется язык описания интерфейсов IDL, который независим от языка описания самого объекта, а именно С, С++, Паскаль и др. Интерфейсы объектов в IDL-языке запоминаются в репозитории интрфейсов (Interface Repository), а реализации объектов -- в репозитории реализаций (Implementation Repository). Независимость интерфейсов от реализаций объектов позволяет их использовать статически и динамически разными приложениями.
Объект-клиент и объект-сервер обмениваются между собой с помощью запросов, каждый из которых исполняется брокером ORB с помощью компонентов, создаваемых на основе описания интерфейсов клиента, сервера и ядра ORB.
Интерфейс клиента (Сlient Interface) обеспечивает взаимодействие с объектом-сервером с помощью ORB и состоит из трех интерфейсов:
– stub-интерфейса, содержащего описание внешне видимых параметров и операций объекта в IDL-языке, генерируется в статическую часть программы клиента и хранится в репозитарии интерфейсов;
– интерфейса динамического вызова (Dynamic Invocation Interface – DII) объекта, определяемого во время выполнения программы клиента посредством поиска описания интерфейса в репозитории интерфейсов или в репозитории реализаций;
– интерфейса сервисов ORB (ORB Services Interface), содержащего набор сервисных функций, которые клиент запрашивает у сервера через брокера.
Stub-интерфейс – клиентский интерфейс, обеспечивает взаимосвязь клиента с ORB. Прикладная программа клиента через посредника stub – статической части программы клиента посылает в запросе параметры, которым сопоставляются соответствующие описания из репозитория интерфейсов.
Интефейс DII обеспечивает доступ (извлечение) объектов и их интерфейсов во время выполнения. Этот интерфейс становится известным во время выполнения и доступен благодаря вызова брокера ORB. В каждом вызове указывается тип объекта, тип запроса и параметры. Такую информацию посылает прикладная программа либо она извлекается из репозитория интерфейсов или репозитория реализаций.
Компонент обеспечения сервиса - объектный адаптер (Object-Adapter) позволяет экземплярам объектов обращаться к большинству сервисных функций ORB, включая генерацию и интерпретацию ссылок на объект, вызов методов, защиту, активизацию (поиск и выполнение объекта), отображение ссылок в экземпляры и регистрацию объектов. Существует несколько видов адаптеров:
– базовый адаптер (Basic Object Adapter -- BOA), который может обеспечивать выполнение объектов независимо от брокера;
– библиотечный адаптер (Library Adapter), обеспечивающий выполнение объектов, хранящихся в библиотеке объектов и вызываемых из прикладной программы клиента;
– адаптер БД (Database Adapter), обеспечивающий доступ к объектно-ориентированным БД.