Распределенные системы (CORBA) CORBA (Common Object Request Broker Architecture) (обобщенная архитектура брокера объектных запросов) - технология построения распределенных объектных приложений, разработана группой по управлению объектами (OMG) для стандартизации услуг, которые брокеры объектных запросов (ORB) должны предоставлять пользователям. Глобальная архитектура CORBA Брокер объектных запросов (ORB) Система времени исполнения, отвечающая за базовые функции связи между клиентом и сервером. Обеспечивает маршрутизацию запросов и ответов, обработку объектных ссылок и поиск доступных сервисов. Глобальная архитектура CORBA Application objects - прикладные объекты. Являются частью приложений. Vertical facilities – службы предназначенные для конкретных предметных областей (средства обработки изображений, финансовых коммуникаций, информатизации в газовой и нефтяной промышленности) Horizontal facilities – высокоуровневые службы общего назначения (управление задачами, пользовательский интерфейс, управление системой, …) Common object services – являются основными системными сервисами, используемыми разработчиками для создания приложений Общая организация системы CORBA Dynamic Invocation Interface (DII) Интерфейс динамических вызовов позволяет приложениям клиентов формировать произвольные запросы к объектам-серверам, интерфейсы которых неизвестны на стадии компиляции клиентского приложения. Информация о структуре интерфейса, к которому обращается клиент для вызова соответствующей операции, может быть получена во время работы программы, если известны имя операции и список параметров и имеется ссылка на соответствующий объект-сервер. Сервисы CORBA Service Description Collection Группирование объектов в списки очереди, множества и т.д. Query Декларирование запросов к наборам объектов Concurrency Обеспечение парал. Доступа к совместно используемым объектам Transaction Простые и вложенные транзакции для вызова методов различных объектов Event Асинхронное взаимодействие на основе механизма событий Notification Расширенные средства асинхронного взаимодействие на основе механизма событий Externalization Средства маршалинга/демаршалинга объектов Life cycle Создание/удаление/перемещение объектов Licensing Средства присоединения к объекту лицензии Naming Средства именования в пределах системы Property Присоединение к объекту пар аттрибут-значение Trading Публикация и поиск служб нужных объекту Persistence Средства длительного хранения объектов Relationship Выражение отношений между объектами Security Создание защищенных каналов авторизации Time Предоставление текущего времени с заданной ошибкой Portable Object Adapter (POA) Компонент, отвечающий за то, чтобы серверный код представлялся клиенту объектом CORBA Отображение идентификаторов CORBA на серванты Пример структуры системы терминология •долгоживущий объект (persistent object) - объект CORBA, способный существовать за пределами процесса, в котором он был порожден; •временный объект (transient object) - объект CORBA, живущий только внутри процесса, в котором он был порожден; •сервант (servant) - физический программный код, реализующий абстрактный CORBA-объект; •менеджер сервантов (servant manager) - объект, отвечающий за управление ассоциациями между объектами и их сервантами, а также за проверку существования объектов; •менеджер POA (POA manager) - объект, который управляет состоянием POA, например, может ли последний обслуживать входящие запросы или нет; •активатор адаптеров (adapter activator) - объект, создающий POA в ответ на запросы, полученные в адрес POA, который в тот момент не существует; терминология •идентификатор объекта (object ID) - идентификатор, который ассоциирует объекты CORBA и их серванты и служит для идентификации объекта в объектном адаптере POA, куда он помещен; •таблица активных объектов (active object map) - таблица, которая хранит соответствия между объектами CORBA и их сервантами с помощью идентификаторов объектов; •инкарнация (incarnation) - процесс установления ассоциации между объектами CORBA и их сервантами; •эфиризация (etherialization) - процесс расторжения связи между CORBA-объектами и их сервантами. Политики POA ThreadPolicy ORB_CONTROL_MODEL - брокер объектных запросов заботится о распределении конкурирующих запросов по различным потокам SINGLE_THREAD_MODEL - все запросы от клиентов обслуживаются по очереди одним главным потоком. LifespanPolicy TRANSIENT - объекты существуют короткое время и «погибают» вместе с POA, где они были зарегистрированы; PERSISTENT - объекты «долгоживущие» и могут пережить процесс, в котором они были созданы. Политики POA IdUniquenessPolicy UNIQUE_ID - сервант может иметь только один объектный идентификатор; MULTIPLE_ID - сервант может иметь один или несколько идентификаторов. IdAssignmentPolicy USER_ID - идентификатор для объекта задается программой; SYSTEM_ID - адаптер объектов POA сам генерирует идентификатор и следит за его уникальностью. ServantRetentionPolicy RETAIN - POA сохраняет активные серванты в таблице активных объектов; NON_RETAIN - активные серванты в таблице активных объектов не удерживаются. Политика обработки запросов RequestProcessingPolicy USE_ACTIVE_OBJECT_MAP - в таблице активных объектов ищется идентификатор объекта, и если он не найден, то возникает исключительная ситуация отсутствия объекта OBJECT_NOT_EXIST (должна быть установлена политика RETAIN); USE_DEFAULT_SERVANT - если идентификатор объектов в таблице не найден или действует политика NON_RETAIN, то запрос перенаправляется серванту по умолчанию; в этом случае при отсутствии такого серванта возникает исключение OBJ_ADAPTER (должна быть установлена политика MULTIPLE_ID.); USE_SERVANT_MANAGER - если в таблице активных объектов нет искомого идентификатора или установлена политика NON_RETAIN, то к поиску подходящего серванта подключается менеджер сервантов Политики POA ImplicitActivationPolicy IMPLICIT_ACTIVATION - POA может активировать серванты неявным способом; кроме того, требует установки политик SYSTEM_ID и RETAIN; NO_IMPLICIT_ACTIVATION - скрытая активация не поддерживается. События (Push модель) События (Pull модель)