HOR / SPEECH
.DOCДоклад.
Тема моего дипломного проекта - Брокер Объектных Запросов, то есть система, которая облегчает взаимодействие между распределенными объектами, которые используются в объектно-ориентированных языках программирования. Использование удаленного объекта, реализация которого может находиться на другой машине, в другой операционной системе не должно создавать никаких дополнительных трудностей. Требовалась система которая с одной стороны допускает публикование уже разработанных, а с другой стороны допускает прозрачное для клиента использование имеющихся удаленных объектов.
Существует спецификация на взаимодействие распределенных объектов CORBA, которая разработана международным консорциумом OMG. Была поставлена задача - в соответствии со спецификацией CORBA версии 2.0 создать систему, поддерживающую взаимодействие с языками C, C++, Object Pascal (Delphi) и работающую под управлением операционной системы Windows NT 4.0. Такая система мной была разработана.
Система состоит из двух основных частей - ядро, которое работает как сервис Windows NT и динамически линкуемой библиотеки, подключаемой к приложениям.
Ядро (Лист 1) управляет двумя системными хранилищами - описаний и реализаций объектов, а также обеспечивает выполнение базового набора функций для всех объектов и отработку запросов к объектам, составляющим ядро системы.
Библиотека (Лист 2) участвует в обеспечении базовых сервисов а также поддерживает взаимодействие со стандартными псевдообъектами.
Ядро и библиотека имеют общую часть - подсистему обработки запросов, которая (Лист 3) помогает направлять запросы к удаленным объектам и обрабатывать запросы, направленные к объектам, находящимся внутри приложения. В качестве средств IPC (Inter Process Communications) выступают (1) оконные сообщения Windows для обмена данных между приложениями, находящимися на одной машине, (2) именованные каналы (named pipes) для обмена данными в сети Microsoft Windows NT, а также (3) сетевой протокол TCP/IP. Для языков C++ и Object Pascal написаны дополнительные библиотеки на соответствующих языках.
Обмен информацией происходит по протоколу GIOP (General Inter Orb Protocol). Основным протоколом взаимодействия является IIOP (Internet Inter Orb Protocol), который является реализацией протокола GIOP поверх транспортного протокола TCP/IP.
Протокол GIOP определяет 7 видов сообщений, алгоритмы кодирования двух основных (запрос-ответ), а также всего сообщения представлены на Листе 4. Каждое сообщение включает в себя заголовок, номер версии, порядок байт, тип и размер сообщения, после чего идут данные, специфические для каждого сообщения. Запрос включает в себя контекст запроса, номер уникально определяющий запрос относительно клиента, флаг необходимости ответа, объект - цель запроса, имя операции и параметры запроса. Ответ состоит из контекста, номера запроса, которому он соответствует, типа ответа и в зависимости от типа ответа либо исклбчения, полученного в результате отработки запроса, либо данных, возвращаемых в качестве результата запроса.
Данные кодируются в соответствии со схемой алгоритма на Листе 5. Базовые типы, а также некоторые псевдообъекты кодируются определенным образом, составные типы кодируются на их основе. Также особым образом кодируются ссылки на объект и исключения.
Технология создания приложения на примере разработки приложения в среде Delphi приведена на Листе 6. Для приложения - сервера объекта требуются следующие этапы: (1) разработка реализации объекта, (2) публикация объекта в системе с помощью эксперта, (3) использование нового класса. Для приложения - клиента объекта: (4) создание объекта - представителя и (5) подключение его в систему.
Пример приложения - сервера приведен на Листе 7: (1) разработка локального объекта “Библиотека”, (2) создание с помощью эксперта объекта, допускающего удаленный доступ и (3) использование новой версии объекта “Библиотека”. При этом получается следующая иерархия наследования: базовый класс, класс, который предназначен для локального использования и производный класс, в который добавляются методы, необходимые для подключения его в систему.
Соответственно разработка клиентского приложения (Лист 8) включает в себя (1) выбор имеющегося объекта, например с помощью специальной утилиты, (2) создание объекта - proxy и (3) использование этого объекта для доступа к удаленной реализации.
Проведенный анализ конкурентоспособности программного продукта (Лист 9) показывает весьма неплохие шансы системы на достижение успеха у потенциальных пользователей. Диаграмма 1 иллюстрирует распределение значение отдельных показателей у рассматриваемого программного продукта и их конкурентов. Подавляющее превосходство системы по пункту Средства разработки и максимальная важность этого пункта среди остальных критериев позволили системе в итоге лидировать по показателю конкурентоспособности.
В разделе “Производственно - экологическая безопасность” были рассмотрены вопросы эргономики, возникающие при организации рабочего места программиста. Рассмотрены различные вредные факторы и выработаны рекомендации по их устранению.
На данный момент система внедряется в коммерческий продукт Байконур, примеры взаимодействия можно посмотреть на выставке UNIX EXPO (25 февраля - 1 марта), первая рабочая версия с распределенными объектами запланирована на конец апреля. В ближайшем будущем планируется выпуск дополнительных утилит для использования языка C++, а также включение в систему поддержки дополнительных сервисов - именования объектов, транзакций, событий и ряда других.
FAQ
Вопрос 1.
- Почему Брокер?
- В маркетинге брокер ни покупает, ни продает товар: он только сводит вместе производителя и потребителя. Так и здесь. Система всего лишь позволяет объектам взаимодействовать между собой.
Вопрос 2.
- Потенциальные пользователи.
- Крупные разработчики больших программных комплексов. Система не предназначена для индивидуальных разработчиков, хотя возможен облегченный вариант.