Укажите назначение основных служб CORBA.
Кратко представим основные службы CORBA.
Служба именования используется для сопоставления имен со ссылками на объекты, группирования и поиска имен для получения доступа к ссылкам на объекты. Имена объектов могут быть составными. Именам приписываются атрибуты, которые никак не интерпретируются, но могут использоваться в программах.
Служба справочника (справочная служба) ищет объекты не по имени, а по совокупности свойств. Службы предварительно регистрируются в справочнике, сообщая о себе классификационную информацию. Обычно в справочник записывается ссылка на интерфейс, предоставляющий услугу, наименование типа службы и ее свойства. Тип службы содержит информацию об именах операций, на которые служба может реагировать, типы параметров и возвращаемых значений. Свойства представляют собой пары «имя/значение», которые описывают возможности службы. Справочник ведет репозитарий типов служб, который позволяет расширять одни типы наследованием свойств других типов. Можно организовывать динамические свойства, которые справочник получает в ответ на запросы от зарегистрированных служб. Справочные службы связанных между собой брокеров могут самостоятельно взаимодействовать друг с другом. Оптимизация поиска может проводиться при помощи стратегий, ограничений и предпочтений. Стратегии задают диапазон поиска. Можно ограничить количество справочных связей, ограничить поиск одним справочником, указать, с какого справочника надо начать поиск. Ограничения указывают критерии поиска с помощью языка ограничений. Предпочтения позволяют задать порядок, в котором выдаются ответы на запросы о поиске. Можно вводить предпочтения выбора максимума, минимума или выбора с ограничениями.
Служба свойств сопоставляет с объектами их свойства в виде пар «имя объекта/значение свойства». Свойства объектов не зависят от их IDL-описаний и не являются частью типов объектов. Свойства могут создаваться, изменяться и уничтожаться динамически. Служба отношений динамически устанавливает связи между объектами. Отношения могут иметь произвольную сложность, особенно при выполнении групповых операций (перемещении, копировании, удалении). Все службы строятся на основе IDL-описаний и имеют свои интерфейсы, но только для службы жизненного цикла реализации методов создаются клиентами, которые знают семантику создаваемых ими объектов и операций над ними (создание, копирование, удаление).
Служба событий (или служба уведомлений) рассылает уведомления о событиях в системе объектам системы. Уведомлением называется сообщение, которое объект посылает объектам для информирования о наступлении события. Поставщики поставляют события, а получатели обрабатывают их с помощью обработчиков. В push-модели активной стороной является поставщик событий, а получатели заранее регистрируются в канале событий для указания интереса к событиям данного типа. Получатель может отсоединиться от канала и прекратить прием событий. В pull-модели получатель сам запрашивает у поставщика данные о событии через обращение к методам канала, а регистрацию проходят поставщики. Получатель может организовать опрос объектов о наличии событий, а поставщики могут отсоединяться от канала, прекращая поступление к себе мешающих им запросов. Канал событий поддерживает обе модели, что позволяет множеству поставщиков взаимодействовать с множеством получателей асинхронно и без каких-либо дополнительных сведений друг о друге.
Служба сохранности объектов обеспечивает механизм сохранения состояний объектов как в реляционных, так и в объектных базах данных. Для одноуровневых хранилищ (объектных СУБД) клиент не должен знать, где находится объект – в памяти или на диске. Объекты в двухуровневых хранилищах (реляционных СУБД) различаются по месту их размещения. Клиент может пользоваться возможностями автоматического управления сохранностью данных или управлять сохранностью самостоятельно. Служба не нарушает принцип инкапсуляции, но позволяет увидеть некоторые детали, то есть определить, когда объект сохранен, а когда – восстановлен.
Служба экстернализации строит образы объектов, взаимодействующих со стандартными потоками ввода-вывода, что позволяет обрабатывать объекты другими системами, не связанными с брокерами объектов.
Служба объектных транзакций OTS (Object Transaction Service) взаимодействует непосредственно с самим брокером. Совместная задача брокера и OTS – автоматическое обеспечение единой среды для работы всех существенных компонентов системы. Подробнее вопросы транзакционного взаимодействия рассмотрены далее в разделе 2.3.
Служба безопасности работает с полным соблюдением правил прозрачности: все действия выполняются автоматически. Реально со службой взаимодействует только администратор. Служба безопасности решает проблемы идентификации пользователей, определения прав доступа к объектам, управления режимами делегирования полномочий в цепочках последовательных вызовов объектами друг друга, проведения аудита, защиты информации при передачах, ведения достоверной истории взаимодействия объектов.
При обеспечении безопасности в системах CORBA приходится учитывать дополнительные сложности, связанные с распределенной природой защищаемых объектов. Объекты могут быть одновременно и клиентами, и серверами. Распределенные объекты меняются со временем. Реализации объектов, а также связи между объектами строятся в процессе работы программы. Многие аспекты взаимодействия распределенных объектов скрыты из-за инкапсуляции. Гибкость объектно-ориентированной модели создает для безопасности особые трудности. Объекты полиморфны, при этом легко заменить один объект другим, имеющим такой же интерфейс. Распределенные объекты способны к беспредельному росту. Сами распределенные системы постоянно изменяются.
Служба времени предназначена для синхронизации часов вычислительных машин, на которых функционируют части системы. Основной частью службы является использование универсального времени, которое на практике проводится очень часто. С помощью службы времени можно получить текущее время с оценкой ошибки измерения, определить порядок, в котором происходят события, возбуждать события, привязанные к определенным моментам времени, вычислять интервалы времени между двумя событиями.
Служба коллекций нужна для создания групп объектов и управления этими группами. Служба вводит несколько видов стандартных коллекций – множества, наборы, последовательности и другие. На их базе определены более сложные интерфейсы – очередь, двусторонняя очередь, очередь с приоритетом, стек, список, массив, дерево. Для каждого вида коллекции объектов определен свой интерфейс создания коллекции и свои средства организации перебора элементов коллекции. В коллекции можно добавлять элементы, менять их на другие элементы, извлекать элементы, удалять элементы из коллекций. Коллекции могут иметь свойства упорядоченности элементов, доступа по ключу, сравнимости и уникальности элементов.
Служба запросов предназначена для поиска объектов, которые соответствуют заданным критериям, записываемым на расширенном последовательном языке запросов SQL (Sequential Query Language) либо на объектном языке запросов OQL (Object Query Language).