Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Korporativnye_informatsionnye_sistemy.docx
Скачиваний:
12
Добавлен:
01.03.2025
Размер:
260 Кб
Скачать
☆

Архитектура системы.

Перечень основных компонент системы.

Прикладные объекты

Службы вертикального уровня

Службы горизонтального уровня

Службы общего назначения

ORB

Брокер запросов

Схема расположения компонент системы на компьютерах.

Структура связей corba.

В технологии CORBA предполагается, что в сети работают клиентские и серверные приложения. На одном компьютере могут быть установлены и приложения – клиенты и приложения – серверы. Сервер поставляет один или несколько объектов. Клиенты и серверы общаются не непосредственно, а через Smart Agent сетевого агента, которому известно местоположение всех объектов. Более того, приложение – клиент не знает даже, где находится сетевой агент, то есть агент тоже может перемещаться по сети!

Как это организовано разберем, пользуясь картинкой. Не уменьшая общности, покажем на картинке все службы CORBA, считая, что на компьютере К запущено только клиентское приложение, на компьютере С – только серверное, а на компьютере А – сетевой агент.

Компьютер К

Компьютер А

Компьютер С

5

O RB

Smart Agent

BOA

6

2

1

Клиент

3 4

Stub

Implementation

Repository

7

Сервер

Sceleton

В среде CORBA на одном из компьютеров должна функционировать специальная программа Smart Agent, осуществляющая взаимодействие брокеров (с клиентских компьютеров). Эта служба при помощи Implementation Repository хранит информацию обо всех запущенных серверах.

На каждом компьютере с серверными приложениями должна быть запущена служба BOA. Если запускается сервер, он обращается к этой службе (1), сообщая о себе. Служба BOA (2) связывается со службой Implementation Repository и передает ей информацию о сервере.

К клиентскому приложению присоединяется специальная программа – заглушка. На каждом компьютере с клиентскими приложениями устанавливается служба ORB (Object Request Broker) – объектный брокер запросов. Когда клиентское приложение обращается к серверу, заглушка перехватывает такое обращение (3), преобразует в транспортный формат и помещает в буфер (4). При первом обращении к серверу брокер ORB компьютера клиента находит в сетевом окружении работающий экземпляр сетевого агента Smart Agent (5) и через него (6) получает информацию о сервере, передает ее заглушке. Далее заглушка передает сообщение серверу. На стороне сервера запрос получает специальный объект, называемый скелетом scelet (7). Он преобразует запрос из транспортной формы в обычный вид и передает его серверу. Ответ сервера передается скелету, тот, преобразовав ответ в транспортный формат, передает в буфер заглушки, она, в свою очередь, передает ответ клиенту. Эти передачи стрелками не изображены, чтобы не запутывать картину.

Остается добавить, что в качестве транспортного протокола CORBA использует протокол UDP. Вспомните, что это – протокол из стека протоколов TCP/IP, не гарантирующий доставку. В этом случае за корректность передаваемых данных отвечают программы, организующие общение по сети. С целью организовать общение компьютеров для CORBA следует соответствующим образом настроить одинаковые сетевые порты компьютеров.

В конце отметим, что технология CORBA поддерживается в операционной системе Windows. Вы можете написать на языке C++ Builder приложения, соответствующие данной технологии.

IDL Interface Definition Language

OMG определяет IDL как средство для описания интерфейсов, к которым обращаются клиенты и которые должны быть реализованы на стороне сервера. Объявления интерфейсов, написанные на OMG IDL, полностью определяют интерфейс и задают параметры каждой операции.

CORBA по определению не привязана ни к языкам программирования, ни к операционным системам, ни к транспортным протоколам, ни к двоичным структурам объектов. Совместимость CORBA – приложений, написанных на разных языках программирования с помощью программных инструментов различных производителей и работающих в разных операционных средах, обеспечивается строгой стандартизацией языка IDL и схемы его отображения на конкретные языки программирования.

IDL – декларативный язык, похожий на С++. Помимо объявлений IDL описание может содержать директивы препроцессора (которые полностью взяты из С++).

Классический CORBA – проект начинается с создания его IDL –объявлений.

После создания необходимого набора IDL-деклараций и помещения их в один или несколько файлов с расширением IDL происходит следующее. Эти файлы обрабатываются специальным компилятором, результатом работы которого является набор сгенерированных файлов, часть которых используется на стороне сервера, а часть – на стороне клиента. Файлы на стороне сервера определяют структуру серверных объектов, поэтому их обычно называют «скелетами» sceleton. Задача программиста – нарастить этот скелет, то есть дописать текст процедур. Файлы на стороне клиента образуют образуют так называемую заглушку (stub). Заглушка содержит полностью готовый к выполнению код, который превращает вызовы клиентом локальных методов заглушки в вызов соответствующих им удаленных методов реальных серверных объектов.

Базовые типы языка IDL: целое, беззнаковое целое и т.п., строка, логическое значение, перечисление (совокупность именованных констант), тип – любой (any). Заметим, что строки бывают двух видов: ограниченные и неограниченные.

Особо выделяется тип octet, который предполагает передачу данных от сервера к клиенту без всяких преобразований. Данные других типов при переходе от сервера к клиенту могут пересекать границы операционных систем и аппаратных платформ. При этом может происходить, например, перекодировка символов из ASCII в EBCDIC или изменение порядка байтов внутри целых чисел.

В IDL особо выделяются сконструированные типы данных. К ним относят массивы (arrays), последовательности (sequence), структуры (struct) и объединения (union). Сконструированные типы описываются при помощи инструкции typedef.

IDL позволяет задавать многомерные массивы. При создании массива обязательно говорить typedef. Массив может содержать произвольное количество размерностей, любое число элементов, элементы массива могут быть разных типов. При описании массива следует явно (то ест ь числом) указать количество элементов в каждой размерности.

Последовательности IDL во многом похожи на массивы. Разница заключается в том, что размерности массива должны быть указаны явно, а длина последовательности может быть произвольной, изменяющейся.

Структура - именованная совокупность полей любого типа. Структура не может содержать ни методов, ни определений типов – только данные. Структура может содержать вложенные структуры.

Объединение. Семантика объединений IDL такая же, как и в С++: объединение можно трактовать как структуру, все поля которой расположены, начиная с одного и того же адреса. В любой момент времени активным является поле только одного и того же типа. В качестве типов полей могут использоваться любые типы IDL. Объединение всегда содержит признак, говорящий о том, поле какого типа используется в настоящий момент. Часто этот признак называют дискриминатором. Дискриминатор может иметь только один из так называемых «интегральных» типов: char, Boolean, перечисление, целое.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]