Для объединения компонентов в ПС необходимым условием является наличие для них формально определенных интерфейсов в языках IDL и APL, а также механизмов динамического контроля связей между компонентами.
Спецификация интерфейса в API и IDL включает описание функциональных свойств компонентов, их типов и порядка задания операций передачи аргументов и результатов для взаимодействия компонентов. Описание интерфейса представляет собой интерфейсный посредник между двумя объектами.
ПС построенная из компонентов и предназначенная для функционирования в распределенной среде имеет некоторые особенности в структуре, а именно она состоит из двух частей, каждая из которых выполняется на разных процессах и взаимодействуют друг с другом через вызов интерфейсных функций. Первая часть – серверная программа, а вторая — клиентская (далее просто сервер и клиент).
В функции интерфейсного модуля клиента входят:
– подготовка внешних данных клиента (параметров),
– набор вызовов этих процедур или обращение к сервису сервера,
– обработка разных ошибок, возврат данных от сервера к клиенту.
Общие функции интерфейсного модуля сервера содержат:
– ожидание сообщений клиента и их обработка; запуск удаленной процедуры и передача ей параметров клиента;
– возврат результатов процедуры клиенту, уничтожения удаленной процедуры и др.
Структура интерфейсного модуля не зависит от ЯП взаимодействующих объектов и в целом одинакова для всех. Это связано со стандартизированной его структурой и общим языком спецификации интерфейса, синтаксис которого представлен ниже в форме Бекуса–Наура:
<интерфейс объекта> ::= Object <имя_Объекта> :{<множество исходных интерфейсов>}; {<множество входных интерфейсов>} end
<множество входных интерфейсов> ::= <множество интерфейсов>
<множество выходных интерфейсов> ::= <множество интерфейсов>
<множество интерфейсов> ::= _ | <интерфейс>; <множество интерфейсов>;