Основные понятия
CORBA-объект – виртуальное понятие: он представляет собой нечто, расположенное на брокере объектных запросов, посылающее запросы к другим CORBA-объектам – серверным объектам и получающее запросы от других CORBA-объектов – клиентов. В контексте запроса от клиента такой объект называют целевым (target object). Хочу подчеркнуть, что CORBA-объект не имеет физической реализации, его нельзя пощупать, отладить, записать на дискету. Обращение к нему осуществляется по объектной ссылке (object reference), которая в отличие от самого объекта является вполне реальной и представляет собой последовательность символов.
Идентификатор объекта (object ID) – уникальное имя объекта внутри его объектного адаптера. Он представляет собой последовательность байт, которая ассоциируется с объектом в момент его создания. Обеспечивается либо программным приложением, либо РОА. Идентификатор объекта не обязан быть уникальным во всем остальном мире и даже для сервера. Там объект известен под своей объектной ссылкой (object reference). Как правило, идентификатор объекта является частью объектной ссылки. Клиент при обращении к целевому объекту не позволяет себе фамильярничать и называть его по идентификатору, он уважительно именует объект полной объектной ссылкой (по имени-отчеству). Есть еще объектный ключ (тоже часть объектной ссылки), который используется GIOP (General Inter-ORB Protocol), протоколом взаимодействия брокеров объектных запросов, для идентификации конечной точки связи. Объектный ключ уникален именно в этом смысле.
Сервант – серверная программа, написанная на каком-либо из языков программирования и выполняющая CORBA-объект. Это может быть набор функций, представляющих состояние объекта (на Си или Коболе) или реализации определенных классов серверного приложения (на C++ или Java). Сервант написан на том же программном языке, что и приложение, и является программной реализацией объекта CORBA.
Необходимо отделять CORBA-объекты от сервантов. По своей ленивой виртуальной природе CORBA-объект не способен ответить на запрос клиента, так что этим занимается как раз трудяга сервант. С другой стороны, CORBA-объекты могут иметь состояние, в то время как серванты не обязательно имеют его. Например, состояние CORBA-объекта может храниться в БД. В этом случае соотвествующий сервант занимается извлечением и модификацией объекта – записи базы данных, но сам состояния не имеет.
Скелетон – серверная программа, которая связывает сервант с объектным адаптером, позволяя объектному адаптеру перенаправлять запросы к соответствующему серванту. В языке Си скелетон – набор указателей на функции серванта, в С++ скелетон – родительский класс для всех классов сервантов. При статических методах вызова скелетон формируется при компиляции IDL кода. При динамических – не используется.
Активизация – запуск существующего CORBA-объекта для обработки клиентских запросов. Активизация предполагает, что интересующий клиента объект имеет подходящий сервант. Создание серванта может входить в процесс активизации. В отличие от сервантов создание объектов не является предметом активизации и, чаще всего, осуществляется с помощью объектов-фабрик, которые относятся к Сервису Жизненного Цикла и подробно описаны в [1]. Объекты-фабрики столь же виртуальны, как и другие CORBA-объекты и, следовательно, в программном смысле создание объектов возложено на сответствующий сервант объекта-фабрики. Именно такой сервант вызывает на объектном адаптере операцию по созданию объекта, что подразумевает установление связки с сервантом и ссылки на новый объект. Кроме того, фабрика-объект может активизировать созданный объект.
Активизированные объекты бывают двух типов: устойчивые и временные. Устойчивые объекты существуют и после останова процесса, который их создал или активизировал. Их жизненный цикл не зависит от жизненного цикла активизировавшего их серверного процесса. Устойчивые объекты более традиционны, для них идентификатор объекта обычно предоставляется приложением и может являться, в частности, ссылкой на устойчивое хранилище объекта, например, совпадать с ключом базы данных.
Временные объекты – это объекты, чей жизненный цикл ограничен процессом или даже объектным адаптером, который их создал. Это необходимо, например, в следующем случае: одно приложение запрашивает другое с требованием обратного запроса-отклика, не дождавшись которого завершает свою работу. В этом случае отклик должен быть временным. Временные объекты «легче» для ORB, так как их жизненный цикл ограничен периодом работы соответствующего объектного адаптера, и они не должны быть реактивизированы.
Деактивизация – действие, обратное активизации, останов CORBA-объекта, разрыв связки между объектом и сервантом, в общем случае без разрушения объекта. В дальнейшем CORBA-объект может быть вновь активизирован. Разрушение CORBA-объекта обязательно вызывает деактивизацию.
Инкарнация (воплощение) – слово, пришедшее из восточных религий и означающее «облекать в вещественную форму или материализовывать». В мире CORBA инкарнация – это связывание серванта с CORBA-объектом для обработки клиентского запроса. Инкарнация материализует в серванте виртуальный CORBA-объект. В отличие от активизации инкарнация относится не к объекту, а к его серванту.
Эфемеризация – в противоположность инкарнации разрушение связки CORBA-объект – сервант со стороны серванта. Эфемеризация возносит (возвращает) объект «в небеса», удаляя от «грешной земли» и выполнения клиентских запросов. Так же как инкарнация, эфемеризация является операцией серванта.
Карта активных объектов (Active Object Map) – таблица объектного адаптера, в которой он ведет реестр активных CORBA-объектов и связанных с ними сервантов. Первые представлены в карте своими идентификаторами.
[назад][содержание][вперед]