Рис. 2.3. Принципиальная схема архитектуры системы CORBA
Клиент может быть статически привязан к интерфейсу, а компилятор IDL может строить заместитель для конкретного сервисного интерфейса. Допускается динамическое обнаружение новых объектов и построение обращений к ним в процессе работы без заместителя. Это базируется на двух компонентах: репозитарии (хранилище) интерфейсов и интерфейсе динамического обращения. Репозитарий интерфейсов хранит определения всех объектов, известных брокеру. Приложения используют репозитарий для поиска, редактирования или удаления интерфейсов. Один брокер может иметь несколько репозитариев, и несколько брокеров могут иметь доступ к одному репозитарию, но каждый брокер должен иметь хотя бы один репозитарий.
Чтобы клиенты могли идентифицировать нужную им службу, в спецификации CORBA ссылки на сервисные объекты выдаются только службой именования и справочной службой. Служба именования извлекает ссылки на объекты, отталкиваясь от их имени, а справочная служба ищет службы, основываясь на их свойствах. Все службы вносят сведения о своих свойствах в справочник. Используя его, клиенты могут искать объекты, реализующие тот или иной интерфейс, а также объекты, свойства которых имеют заданные значения.
Спецификация CORBA позволяет пользователям систем, построенных на ее основе, организовывать свои программы в виде служб, предоставляющих услуги другим программам, то есть таким же службам или более традиционно построенным программам пользователей. Однако обычно (в некоторой аналогии с библиотеками стандартных программ) вместе с базовой системой (самим брокером CORBA) могут распространяться программы служб, спецификации которых также стандартизованы. Некоторые из этих служб являются обязательными и распространяются всегда, другие же службы, несмотря на стандартность интерфейса, имеют более ограниченное применение в редко встречающихся ситуациях и распространяются по отдельным соглашениям с пользователями.
Кратко представим основные службы CORBA.
Служба именования используется для сопоставления имен со ссылками на объекты, группирования и поиска имен для получения доступа к ссылкам на объекты. Имена объектов могут быть составными. Именам приписываются атрибуты, которые никак не интерпретируются, но могут использоваться в программах.
Служба справочника (справочная служба) ищет объекты не по имени, а по совокупности свойств. Службы предварительно регистрируются в справочнике, сообщая о себе классификационную информацию. Обычно в справочник записывается ссылка на интерфейс, предоставляющий услугу, наименование типа службы и ее свойства. Тип службы содержит информацию об именах операций, на которые служба может реагировать, типы параметров и возвращаемых значений. Свойства представляют собой пары «имя/значение», которые описывают возможности службы. Справочник ведет репозитарий типов служб, который позволяет расширять одни типы наследованием свойств других типов. Можно организовывать динамические свойства, которые справочник получает в ответ на запросы от зарегистрированных служб. Справочные службы связанных между собой брокеров могут самостоятельно взаимодействовать друг с другом. Оптимизация поиска может проводиться при помощи стратегий, ограничений и предпочтений. Стратегии задают диапазон поиска. Можно ограничить количество справочных связей, ограничить поиск одним справочником, указать, с какого справочника надо начать поиск. Ограничения указывают критерии поиска с помощью языка ограничений. Предпочтения позволяют задать порядок, в котором выдаются ответы на запросы о поиске. Можно вводить предпочтения выбора максимума, минимума или выбора с ограничениями.
Служба свойств сопоставляет с объектами их свойства в виде пар «имя объекта/значение свойства». Свойства объектов не зависят от их IDL-описаний и не являются частью типов объектов. Свойства могут создаваться, изменяться и уничтожаться динамически. Служба отношений динамически устанавливает связи между объектами. Отношения могут иметь произвольную сложность, особенно при выполнении групповых операций (перемещении, копировании, удалении). Все службы строятся на основе IDL-описаний и имеют свои интерфейсы, но только для службы жизненного цикла реализации методов создаются клиентами, которые знают семантику создаваемых ими объектов и операций над ними (создание, копирование, удаление).
Do'stlaringiz bilan baham: |