Главная » Delphi » Разработка приложений CORBA

0

Характеристики CORBA

Некоторые характеристики CORBA делают  эту спецификацию особенно удобной при работе в распределенной среде:

•  В  CORBA  используется объектно ориентированный  подход.   Каждый   сервер CORBA предоставляет интерфейс, содержащий перечень поддерживаемых ме тодов  и  типов   данных.   При  этом  подробности реализации  от  пользователя скрыты.

•   Прозрачность обнаружения объектов. Истинная сила  CORBA заключается в том, что объекты могут быть обнаружены в любом месте. Когда клиентское приложение CORBA запрашивает серверный объект, то расположение сервера заранее не из вестно. Фактически при использовании CORBA клиентское приложение работает с образом серверного приложения. В то же время все выглядит так, как будто сервер ный объект работает локально в собственном пространстве процесса. Данный во прос будет подробно рассмотрен в разделе, посвященном архитектуре CORBA.•   Независимость от языка  программирования. Объекты могут быть  созданы при помощи различных языков программирования. При  этом  часто  используются языки  Java и C++, однако  и Delphi  также  широко применяется, так как данный пакет предоставляет все необходимые средства разработки. Для совместимости с перечисленными языками программирования в объектах CORBA  использу ются  соответствующие интерфейсы.  Каждый  серверный объект должен  быть согласован со своим определением интерфейса.

Из за различий в языках  программирования подробности реализации не могут быть  скорректированы клиентами на стороне сервера. В мире  CORBA исполь зуется именно такая ограниченная объектно ориентированная схема.

•   Поддержка различных платформ и операционных систем.  Существуют  реали зации  CORBA для различных платформ и операционных систем.  На стороне сервера баз данных  часто  используется язык  Java, а на среднем уровне  и сторо не  клиента —  Delphi. Разработчики могут  создавать мощные приложения  для уже существующих  систем.  В то же время  Delphi позволяет реализовать функ ции извлечения информации с сервера.

Архитектура CORBA

Архитектура CORBA схематически представлена на рис. 19.1.  Общей  частью  для клиента и сервера является брокер объектных запросов ORB,  который организует взаимодействие объектов. При  этом используется протокол Internet Inter ORB (IIOP), в основе которого лежит  протокол TCP/IP,  что  гарантирует доставку  сообщений и корректную работу во всех системах, где используется TCP/IP. Кроме  обработки трафика сообщений брокер ORB  также  вносит изменения, компенсирующие  разли чия платформ.

Рис. 19.1. Архитектура CORBA

Предположим, что с компьютера на базе процессора Intel на рабочую  станцию Sun было  передано число  123. Без  вмешательства в процесс передачи такое  число  кор ректно обработано не будет, потому  что  в процессорах Intel и Sun используются раз личные схемы регистров.

Это называют конфликтом “остроконечников и тупоконечников” (Big Endian/Little Endian problem). Брокер ORB знает о типе платформы, на которой он запущен, поэтому устанавливает в сообщении CORBA соответствующий флажок. Принимающая сторонасчитывает такой  флажок и автоматически выполняет корректную  обработку данных. Подобный подход гарантирует правильную обработку числа 123 на обеих сторонах.

НА ЗАМЕТКУ

Согласно странице 65 книги Ру (Rhu), Херрона (Herron) и Клинкера (Klinker) IIOP Complete (издательства Addison Wesley), “термины остроконечник и тупоконечник — это аналогия с книгой Джонатана Свифта Путешествия Гулливера, в которой остро- ва Лилипутия и Блефуску враждовали из-за того, что не могли договориться, с какой стороны разбивать яйца, — с тупой или с острой”.

Клиентская сторона состоит из двух дополнительных слоев (см. рис. 19.1). Прямо угольнику клиента соответствует приложение. Более  интересным элементом является так называемая заглушка (stub). Заглушка — это файл,  который автоматически создает ся специальным компилятором под названием IDL2Pas,  входящим в состав  Delphi Enterprise. Такой  компилятор анализирует файлы, в которых описаны интерфейсы сервера, и создает  исходный код на языке  Delphi Pascal  для работы с CORBA ORB. Документацию по IDL2Pas  можно  найти в файлах HTML  на компакт  диске  Delphi  6 в каталоге Delphi6\Doc\Corba.

Заглушка   содержит  один   или  более   классов,  “отображающих” (mirror)   сервер

CORBA. Эти классы  содержат несколько открытых интерфейсов и типов  данных, аналогичных тем,  что  предоставлены на  сервере. Для  взаимодействия с  сервером клиент обращается к классам заглушки, которые выполняют роль посредника для дос тупа к объектам сервера. Символ  в блоке  заглушки  соответствует подключению к сер веру. Подключение осуществляется с помощью связанного (bind) вызова, поступающе го со стороны клиента. В свою очередь, заглушка использует так называемую объект ную ссылку (object reference) на  сервер, которой соответствует символ.  После подключения к серверу  клиент вызывает один  из методов  класса  заглушки.  Заглушка упаковывает запрос и все параметры метода  в специальном буфере, а затем  передает этот  пакет  на  сервер. Описанный процесс упаковки  называется маршалингом (marshaling) данных.  Далее  заглушка через брокер ORB выполняет вызов  на сервере метода,  соответствующего объектной ссылке.  Когда от сервера поступает ответ, класс заглушки принимает сообщение от брокера ORB и передает его клиенту.

Клиент также может напрямую вызывать некоторые специальные функции броке

ра ORB. Эта логическая связь обозначена на схеме (см. рис. 19.1).

На  стороне  сервера  находится интерфейс  ORB,  называемый  базовым объектным адаптером (BOA —  Basic Object  Adapter). Он  отвечает за маршрутизацию  сообщений между  брокером ORB  и  интерфейсом каркаса   (описываемым далее).   В будущем  в Delphi  предполагается использовать более  гибкий настраиваемый интерфейс переноси мого объектного адаптера  (POA — Portable Object  Adapter).

Каркас (skeleton) —  это  класс,  который так же,  как и заглушка  создается компиля тором IDL2Pas.  Он  содержит один  или  более  классов, предоставляющих серверные интерфейсы CORBA. В реализации CORBA на Delphi  каркас  не содержит каких либо деталей реализации серверных интерфейсов. Это — просто файл  с классами, которые реализуют часть  функций сервера. Такой  файл  называют еще  файлом IMPL (сокращение от слова “implementation” — реализация).Классы  в файле IMPL предназначены не только  для спецификации CORBA. Одни и  те  же  классы   реализации  могут  использоваться  для  организации  интерфейсов CORBA, COM и других стандартов.

При  получении сообщения на стороне сервера брокер ORB передает буфер  сооб щения  интерфейсу BOA, который, в свою очередь, передает этот  буфер  классу карка са. Каркас распаковывает данные  буфера (демаршалинг) и определяет, какие методы  из файла  IMPL  должны  быть  вызваны. После  вызова  этих  методов каркас  упаковывает полученные результаты и значения параметров для передачи клиенту.  Буфер  ответа опять  последовательно передается интерфейсу BOA и ORB, а затем отправляется брокеру ORB на стороне клиента.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии