
- •Государственный комитет рф по высшему образованию
- •0. Введение.
- •0.1. Идея общей интеграции.
- •0.2. Взаимодействие на уровне процедур.
- •0.3. Распределенные объекты.
- •0.4. Почему corba.
- •1. Поддержка на различных платформах.
- •2. Устойчивость стандарта.
- •3. Сложность освоения.
- •4. Поддержка повторного использования кода.
- •1. Постановка задачи.
- •1.1. Классические объекты.
- •1.2. Распределенные объекты в терминах спецификации corba.
- •1.3. Требования, предъявляемые к orb-у.
- •2. СпецификацияCorba.
- •2.1. Объектная модель.
- •2.2. Обзор архитектурыCorba.
- •2.3. Пример Брокеров Объектных Запросов.
- •3. Структура системы.
- •3.1. Уточнение деталей реализации.
- •3.2. Структура ядра системы.
- •3.3. Структура библиотеки.
- •3.4.Структура подсистемы обработки запросов.
- •3.5. Входные и выходные данные.
- •4. Протокол обменаGiop.
- •4.1. Особенности и цели протокола.
- •4.2. Обзор протоколаGiop.
- •4.3. Синтаксис Общего Представления Данных -cdr.
- •4.4. Формат сообщений протокола giop.
- •4.5. Транспорт для протоколаGiop.
- •4.6. Реализация взаимодействия по протоколуGiop.
- •4.7. Поддержка протоколаGiop в рамках отображения дляObject Pascal.
- •5. Разработка отображения для языкаObject Pascal.
- •5.1. Множественное наследование.
- •5.2. Статические экземпляры классов.
- •Initialization
- •Initialization
- •6. Технология написания и отладки приложений, работающих с распределенными объектами.
- •6.1. Этапы разработки программы.
- •6.2. Технология написания сервера объекта.
- •6.3. Технология написания клиента объекта.
- •6.4. Отладочные возможности библиотеки.
- •7. Пример программы, работающей с распределенными объектами.
- •7.1. Последовательность действий при создании объекта.
- •7.2. Объект библиотека.
- •7.3. Сервер объекта.
- •7.3. Клиент объекта.
- •7.4. Окончательный результат.
- •8. Анализ конкурентоспособности программного продукта.
- •8.1. Введение.
- •8.2. Ситуация на рынке.
- •8.3. Программные продукты - конкуренты.
- •8.4. Основные понятия.
- •8.5. Параметры для оценки эффективности.
- •8.6. Расчет эффективности.
- •8.7. Цена.
- •8.8. Конкурентоспособность.
- •8.9. Выводы и прогнозы.
- •9. Вопросы эргономики и их решение для создания комфортных условий труда программистов.
- •9.1. Введение.
- •9.2. Рабочее место программиста.
- •9.3. Вредные факторы, присутствующие на рабочем месте и их классификация.
- •9.4. Вредные производственные воздействия.
- •9.5. Эргономические требования.
- •9.6. Эргономика окружающей среды.
- •9.7. Экологическая безопасность.
- •9.8. Выводы.
3.3. Структура библиотеки.
Составными частями библиотеки (лист 2) являются:
подсистема обработки запросов;
часть реализации псевдообъектов;
реализация всех основных функций.
В библиотеке присутствует часть реализации псевдообъектов, которая вместе с частью, реализованной в ядре системы полностью соответствует списку псевдообъектов, приведенных в спецификации CORBA и набору их свойств.
В библиотеке реализованы все основные функции, которые соответствуют функция модуля CORBA.IDL. Их синтаксис определен с соответствии с отображениемIDL для языкаC. Реализация части функций не требует инициирования дополнительных запросов и выполняется в рамках вызывающего процесса. Реализация других функций порождает запросы к ядру системы либо серверу объекта. Причем в отдельных случаях для выполнения одной функции может быть инициировано несколько запросов.
3.4.Структура подсистемы обработки запросов.
И ядро, и библиотека имеют в себе подсистему обработки запросов (лист 3), которая обеспечивает создание запроса к произвольному объекту и пересылку запроса приложению, в котором находится реализация данного объекта, а также обеспечивает прием и обработку запросов к объектам, для которых реализация находится внутри данного приложения.
Подсистема имеет два почтовых ящика - входной (Inbox3) и выходной(Outbox). Входной почтовый ящик связан с множеством приемников(Receiver), которые осуществляют пересылку сообщения произвольного размера. При этом конкретный приемник может быть связан с одним из логических устройств или структур - окном4, именованным каналом(Pipe)или портом для обмена по протоколуTCP/IP. Выходной почтовый ящик имеет также множество передатчиков, которые осуществляют передачу сообщений по тем же самым каналам связи.
Когда пользователь инициирует создание запроса вызовом функцииCORBA_Object_create_request, то запрос менеджер запросов(RequestManager) создает новый запрос на выполнение операции(OperationRequest). Далее пользователь может добавить аргументы, необходимые для выполнения операции посредством вызова процедуры CORBA_Request_add_arg. После этого можно либо послать запрос без получения (функцияCORBA_Request_send), либо послать с получением ответа от сервера объекта (функцияCORBA_Request_invoke). При посылке запрос направляется в выходной почтовый ящик, а оттуда перенаправляется в передатчик, который связан с реализацией данного объекта. Если запрос был послан с помощью операцииCORBA_Request_send, то подождать завершения или возникновения исключения можно при помощи функцииCORBA_Request_get_response.
Сообщение, пришедшее во входной ящик, анализируется и в зависимости от его типа выполняются различные действия. Если пришел ответ от сервера объекта на посланный ранее запрос, то этот ответ передается менеджеру запросов и далее из полученного сообщения выделяется информация об успешности завершения и полученных данных. Если же пришедшее сообщение является запросом от другого приложения на выполнение определенных действий он передается анализатору запросов (RequestAnalyser). Анализатор запросов на основании пришедших данных создает запрос к серверу объекта(ServerRequest)и в зависимости от предмета запроса (объекта) передает запрос процедуре динамического выполнения запросов (Dynamic Implementation Routine - DIR)данного объекта. Если объект был подключен к стандартной процедуреDIR, то она получает аргументы запроса, формирует стек вызова и передает выполнение конкретной процедуре пользователя (UserRoutine), реализующей данную операцию. В зависимости от результатов запроса в случае необходимости формируется сообщение - ответ, которое передается в выходной ящик и далее отсылается клиенту, инициировавшему запрос.