Приложения для работы с локальными базами данных 483

Каждый интерфейс имеет уникальный идентификатор IID (Interface Identifi-
er), являющийся частным случаем GUID (Global Unique Identifier) — глобального
идентификатора, используемого в Windows. Параметры интерфейса описывают
некоторый класс с идентификатором CLSID (Class ID), в котором объявлены поля,
свойства, методы, параметры обращения к свойствам и методам. Таким образом,
клиент с помощью этого интерфейса может использовать объект СОМ сервера так
же, как свой собственный объект. Любой объект СОМ имеет интерфейс lUnknown,
с помощью которого получает доступ к основному интерфейсу объекта.

Сервер СОМ реализуется в виде программы или DLL. Если клиент и сервер
располагаются на разных компьютерах, используется распределенный вариант
СОМ — DCOM. При этом обмен информацией между клиентом и сервером осущест-
вляется двумя промежуточными программами: Proxy (уполномоченный) и Stub
(заглушка). Proxy располагается на машине клиента. Получив от клиента запрос,
Proxy упаковывает его в пакет СОМ и переправляет на машину сервера. Там этот
пакет перехватывает Stub, распаковывает пакет и передает запрос серверу. Таким
образом, запрос выполняется на машине сервера.

СОКВА (Common Object Request Broker Architecture) — это стандарт построения
приложений с распределенными объектами. Разработчиком CORBA является отрас-
левой комитет OMG (Obgect Management Group — группа управления объектами),
представляющий многие фирмы. Взаимодействие клиента и сервера в CORBA осуще-
ствляется через ряд посредников. На машине клиента размещается Stub и ORB (Ob-
ject Require Broker). Клиент обращается к Stub так, как если бы это был сам объект.
При этом используется интерфейс объекта, предоставляемы клиенту с помощью Stub.

Stub транслирует полученный от клиента вызов какого-то метода объекту
ORB, а тот передает соответствующее сообщение в сеть. В сетевом окружении кли-
ента располагаются объекты Smart Agent (интеллектуальные агенты). Сообщение,
переданное объектом ORB, перехватывает один из Smart Agent, отыскивает сете-
вой адрес соответствующего сервера и передает полученное сообщение на машину
сервера. На машине сервера сообщение воспринимает расположенный там объект
ORB. Он передает его расположенному там же объекту BOA (Basic Object Adap-
ter — базовый адаптер объекта). BOA может проводить фильтрацию запросов,
определяя, какой уровень доступа разрешен данному клиенту и вообще разрешено
ли обрабатывать такой запрос данного клиента. Если доступ разрешен, то BOA пе-
редает вызов в особый объект сервера — Skeleton, который и реализует сам вызов.

Интерфейс в CORBA описывается с помощью специального языка IDL (Inter-
face Definition Language), напоминающего C++. Компилятор IDL создает в процес-
се компиляции объекты Stub и Skeleton данного интерфейса. Использование язы-
ка высокого уровня в сочетании с компилятором позволяет делать обмен данными
независимым от аппаратных средств. Поэтому клиент и сервер могут располагать-
ся на машинах разных платформ, например, на персональном компьютере IBM и
рабочей станции Sun.

При обмене информацией между ORB и Smart Agent используется протокол
UDP. Для реализации CORBA в сетевом окружении клиента должен существовать
хотя бы один объект Smart Agent. Обычно в локальной сети Smart Agent распола-
гается на головной машине, а в Интернет — на одном из узлов. При создании сер-
вера он регистрируется в Smart Agent. Таким образом Smart Agent знает, где най-
ти тот или иной сервер, а при отказе одного сервера может переключится на дру-
гой. Это повышает надежность работы.

9.1.4 Организация связи с базами данных в C++Builder

Основой работы C++Builder с базами данных является Borland Database Engi-
ne (BDE) — процессор баз данных фирмы Borland. BDE служит посредником меж-
ду приложением и базами данных. Он предоставляет пользователю единый интер-

16*