Архитектура распределенной системы CORBA. Технология удаленного доступа к базам данных CORBA (Common Object Regust Broker Architecture — общая архитектура объектных заявок) представляет собой промежуточное программное обеспечение, устанавливающее отношения клиент – сервер между объектами в распределенной компьютерной среде.
Типовая архитектура распределенной системы CORBA, которая включает в себя следующие компоненты:
• ORB (Object Request Broker) — брокер объектных запросов (заявок), включающий в себя язык IDL;
• IDL (Interface Definition Language) — язык определения интерфейсов;
• РОА (Portable Object Adapter) — адаптер объектов;
• Stub — заглушка;
• Skeleton — основа;
• Smart Agent — «умный» агент.
Брокер объектных запросов. ORB устанавливает отношения клиент—сервер между объектами. В данной технологии роли клиента и сервера не постоянно приписаны компонентам, а устанавливаются только на один запрос.
Схему работы ORB можно представить следующим образом:
• клиент (объект-отправитель) вызывает операцию (метод) на адресате, идентифицируемом ссылкой, и передает запрос ORB;
|
|
• посредник по ссылке находит сервер, содержащий объект-адресат (в терминологии CORBA этот сервер иногда называют object implementation — реализация объекта), и активизирует его. Затем доставляет запрос к объекту-адресату, передает адресату параметры, вызывает соответствующую операцию и возвращает результат клиенту после выполнения операции.
В одном запросе могут быть указаны несколько адресатов, которые могут располагаться как на одном, так и на разных серверах.
Система CORBA позволяет организовывать различные архитектурные схемы ORB, однако каждая из них должна реализовывать три категории операций:
· одинаковые для всех реализаций ORB;
· специфичные для конкретного объектного типа;
· специфичные для отдельных видов реализаций объектов. Возможны следующие
схемы брокера объектных запросов;
· ORB, включаемый в клиентское и серверное приложения;
· ORB, выполненный в виде сервера;
· ORB, реализованный как часть операционной системы;
· ORB, основанный на библиотеках.
· ORB, включаемый в клиентское и серверное приложения, формируется в виде набора
подпрограмм, выполняемых как на стороне клиента, так и на стороне сервера.
ORB, выполненный в виде сервера, реализуется в виде отдельного приложения, что позволяет обеспечить централизованную обработку информации.
На практике схему реализации ORB в виде сервера применяют для размещения на нем нереляционных баз данных.
На сервере базы данных MS SQL хранится информация в виде реляционных таблиц — дискретных (параметрических) характеристик карт местности (поверхностей). Доступ к информации, хранящейся на этом сервере, осуществляется по технологии ADO.
|
|
На сервере базы данных CORBA-сервер хранятся карты местности в виде отдельных графических файлов, доступ к которым осуществляется по технологии CORBA.
ORB, реализованный как часть операционной системы, используется для повышения надежности, защиты данных и достижения лучшей производительности. В этом случае возможно применение различных методов оптимизации обработки данных, например отмены кодирования и декодирования данных, если клиентская и серверная части находятся на одном компьютере.
ORB, основанный на библиотеках, используется, если код объекта занимает небольшой объем и не требует никаких дополнительных средств.
Язык определения интерфейсов. IDL — это специальный язык для описания ORB и других компонентов системы CORBA, который не содержит присваиваний, операторов if или while, функций и логических переходов. IDL представляет собой процедуры описания, декларации, пассивные определения атрибутов, родительских классов, типов поддерживаемых событий, методов (включая входные и выходные данные), основные и составные типы данных, исключительные ситуации для обработки ошибок.
IDL описывает интерфейсы аналогично классам в С++ или в Smalltalk, интерфейсы в Java, пакеты в Ada95. Каждый интерфейс определяет операции, которые могут быть вызваны клиентами. Синтаксически IDL является подмножеством С++с дополнительными ключевыми словами. Существуют компиляторы IDL в С++, Java, Ada, Smalltalk, COBOL, OLE (Visual Basic, PowerBuilder, Delphi).
Одна из задач IDL — обеспечение взаимодействия через ORB всех приложений клиент —сервер.
В связи с этим систему CORBA называют стандартом для разработки промежуточного программного обеспечения, которое поддерживает работу с удаленными базами данных.
Адаптер объектов. РОА (в первых версиях CORBA — BOA — Basic Object Adapter) — это первичный путь для обеспечения сервиса конкретной реализацией объекта. Предполагается, что имеется несколько адаптеров объектов, каждый из которых обеспечивает доступ к объектам определенного вида.
Сервисы, которые обеспечиваются ORB посредством адаптеров объектов, часто включают в себя: генерацию и интерпретацию ссылок на объекты, вызов методов, активацию и деактивацию реализаций объектов, а также регистрацию конкретных реализаций и отображение объектных ссылок и реализаций.
Интерфейс должен быть либо определен в хранилище описаний, либо иметь соответствующее IDL-описание, на основании которого компилятор создает исходный код для объекта-заглушки, находящегося у клиента, и для основы реализации объекта.
Информация, которая находится в каждом из хранилищ, может быть произвольно изменена в любой момент времени с помощью методов, обеспечиваемых реализацией ORB. Однако неосторожное изменение, сделанное во время работы, может привести к нарушению целостности информации, находящейся в каждом из хранилищ, и сделать невозможным дальнейшее функционирование ORB.
Заглушка. Stub связывает клиентские приложения с ORB. Написанные на языке IDL сервисы после компиляции на язык программирования клиентского приложения и компоновки с ним становятся абсолютно прозрачны для клиента и выполняют функции обращения к удаленному объекту — серверу. Заглушка осуществляет передачу запроса и обычно оптимизирована для выполнения конкретного ORB. Если клиентам доступно более одного ORB, то у них может быть различное внутреннее представление заглушек.
Основа. Skeleton аналогично Stub связывает ORB и серверные приложения. Создается после компиляции языка IDL. Интерфейс динамического вызова — DU (Dynamic Invocation Interface) — позволяет объекту создавать запрос в реальном времени. Структура запроса, его параметры и атрибуты и даже сама ссылка на объект-адресат генерируются в Dil либо на основе запроса к объекту и анализа отклика.
|
|
«Умный» агент» - это динамический сервис, моделирующий сетевой каталог, в котором зарегистрированы известные ему серверы объектов как в локальной сети, так и в сети Интернет. Он отыскивает - требуемый сетевой адрес сервера и передает ему запрос ORB.