Методы интеграции (композиции) компонентов
Термин интеграция олицетворяет собой действия по обеспечению способа взаимодействия разных компонент (аппаратных и программных) и представления данных в рамках одной системы или среды. К интеграционным операциям можно отнести: сборку, комплексирование, композицию, взаимодействие и др. Некоторые из этих операций (например, комплексирование) означают объединение компонент по в единое целое ( в комплекс, систему, агрегат и др.). Такой подход к решению проблемы интеграции соответствовал периоду бурного развития и существования больших машин (mainframes), которые позволяли объединять программные компоненты в монолитные системы и комплексы больших размеров (до 100–200тыс. команд). Одновременно с этим интеграция коснулась и данных (файлы, БД, интегрированные БД и др.).
Однако с приходом на смену больших машин разных видов малых компьютеров, объединяемых в локальные и глобальные сети проблема интеграции приобрела другой смысл. Понятие монолитной системы заменилось интегрированной, распределенной системой или средой, включающей все необходимые средства для обеспечения единообразного взаимодействия с ними разных пользователей. Появились и в настоящее время функционируют крупные международные распределенные системы (RPC Sun, OSF DCE, COM, SOM, CORBA и др.), которые предоставляют средства интеграции программных компонент в каркасы и конфигурации, основанные на стандартной модели взаимодействия компонент в открытых системах (Open Systems Interconnection – OSI) [1].
Эталонная модель OSI имеет семь уровней, на каждом из них обеспечивается взаимосвязь компонентов. На верхнем уровне модели обеспечивается доступ к служебным программам компьютерной сети (передача данных, почтовая служба, управление сетью). Приложение передает запросы служебным программам и процессам сети через уровень представления данных, которые осуществляют кодирование (перекодирование) данных и представление их в соответствующую для заданной машины форму. Связывающим звеном являются прикладные элементы обслуживания типа ASF (Application Service Elements), а также множество других служебных функций.
Эта модель описывает функции и назначение семи ее уровней, определяет взаимодействие между службами и компонентами на каждом уровне сети. Непосредственной связи между службами не существует, а взаимодействие осуществляется через уровни. Эта модель фактически задает две модели взаимодействия компонентов:
– горизонтальная модель для связи программных процессов на разных компьютерах одного уровня;
– вертикальная модель для взаимодействия компонентов между уровнями.
С прикладной точки зрения основная задача разработчиков заключается в выборе необходимой современной среды функционирования программных компонентов, способов их обращения друг к другу и возможностей преобразования передаваемых данных.
Распределенные системы общего назначения построены согласно модели OSI и предоставляют прикладным приложениям готовый набор ([20]): сервисных операций (управление и хранение объектов, обслуживание очередей и запросов к БД, др.); общих средств обслуживания приложений (администрирование, управление интерфейсами, др.); средств описания и поддержки взаимодействий объектов приложений, инструментариев (автоматизация приложений и БД, генераторы интерфейсов взаимодействия и др.); типовых функциональных компонентов для предметных областей: медицины, финансов, страхования и др.
К распределенным системам, обеспечивающим взаимодействие компонентов относятся:
– ОNС SUN, OSF DSE [2], основанные на механизме вызова удаленных процедур;
– DCOM [3] c возможностью связи распределенных объектов и документов;
ОМА (Object Managment Architecture) [4] с широким набором средств взаимодействия объектов c помощью брокера с помощью брокера объектных запросов;
– система JAVA [5] , основанная на методе вызова RMI и др.
К основным механизмам взаимодействия компонентов и объектов сетевой среды на уровне внешних языков относятся:
– RPC–язык (Remote Procedure Call) вызова удаленных процедур;
– язык описания интерфейсов (Interface Definition Languge – IDL),
– механизм посылки запросов RMI в ЯП Java [5–7].
RPC–механизм включает языки высокого и низкого уровня для описания интерфейса взаимодействующих удаленных компонентов. На языке высокого уровня в интерфейсе компонента описывается оператор RPC
из библиотеки удаленных процедур системы, который инициирует прохождения сообщения по сети и выполнение. На языке низкого уровня можно дать подробное описание в параметрах оператора вызова (тип протокола, размер буфера данных, контрольные функции и др.) всех особенностей прохождения запроса по сети.
Данный механизм обеспечивает взаимосвязь одного процесса с удаленно расположенным от него другим процессом (например, сервером) на другой машине с помощью протоколов UDP и TCP/IP. Связывающим звеном между вызываемым и вызывающим процессом является интерфейс объекта (stub) или посредник клиента при его взаимодействии с сервером сети. Вызывающий объект клиенте обращается к stub–клиента для посылки сообщения stub–сервера в целях выполнения удаленной процедуры.
Механизм посылки запроса в системе CORBA включает оператор вызова удаленного метода/функции объекта, системные средства его поддержки с помощью протоколов IIOP, GIOP, которые выполняет брокер ORB. Оператор запроса и его параметры формально описываются на IDL – языке и размещаются в интерфейсе объекта (stub–клиента) для обращения к серверу через интерфейс stub / skeleton в целях выполнения указанного в сообщении удаленного метода.
Интерфейсы (stub и skeleton) отображаются в ЯП объектов с помощью IDL–генератора. Функции посылки запроса выполняет брокер ORB системы CORBA, которая содержит:
– язык IDL и генератор трансформации описания интерфейса в соответствующий ЯП;
– общий объектный сервис (Common Object Services) для управления событиями, транзакциями, интерфейсами, запросами и др.;
– общие средства (Common Facilities) – электронная почта, телекоммуникация, управление информацией, эмулятор программ и др. для использования любыми группами компонент и приложений.
Брокер ORB является главной парадигмой взаимодействия компонентов в разных приложениях и средах. Он реализован многими фирмами и содержится в системах: COM, SOM, Nextstep и др. Этим обеспечена совместимость программных компонентов друг с другом, сделанных для разных сред, а также взаимодействие между самими брокерами в объединенных сетях.
Вызов удаленного метода RMI реализован в системе JAVA и предназначен для проектирование приложений со стандартным вызовом удаленных компонентов. По своим функциям этот метод аналогичен функциям брокера ORB, обеспечивает передачу сообщений, их синхронизацию и освобождение памяти после выполнения компонентов. Виртуальная машина (virtual machine) работает с byte–кодами компонентов на других ЯП и интерпретирует коды той машины, для которой компонент был скомпилирован. Иными словами, разработан новый подход к проектированию связей и управлений объектами в распределенных системах, которые описываются в языках JAVA и С++.
Таким образом, рассмотренные средства современных распределенных систем – это средства высокого уровня для прикладного программирования компьютерных систем.