Индивидуальные задания на работу. 4.4.1. Индивидуальное задание для каждого студента
4.4.1. Индивидуальное задание для каждого студента. Разработать DCOM-сервер, используя встроенные средства библиотеки ATL, который:
· обеспечивает выполнение простейших математических операций;
· обрабатывает запросы от клиента для заданной преподавателем простой арифметической функции с пятью операндами и четырьмя операциями, например, "(a+b)*(c–(d/e))";
· предоставляет возможность получения статистики о выполненных запросах.
4.4.2. Индивидуальное задание для каждого студента. Разработать на любом языке программирования тестовый клиент, обладающий минимальным интерфейсом, который задается преподавателем, и имеющий возможность работать в двух режимах:
· реальном (пользователь составляет запрос и отправляет его на сервер);
· эмуляции потока запросов (клиент генерирует заданное количество запросов с определенными временными интервалами между ними).
В любой момент времени клиент может послать запрос серверу на получение статистики о выполненных математических запросах.
Лабораторная работа № 5. Разработка CORBA приложений
Что нужно, чтобы приступить к созданию приложений на основе CORBA? В принципе не так уж и много: прежде всего научиться описывать объекты, используя язык IDL.
Для начала следует установить инструментарий: будет использоваться VisiBroker 3.3 for Java и VisiBroker 3.3 for C++. Данные пакеты можно получить с Web-сервера компании Inprise в виде версий дистрибутива. Кроме того, VisiBroker входит в достаточно распространенные Enterprise-редакции пакетов JBuilder, C++Builder и Delphi корпорации Borland/Inprise. Еще один плюс в пользу выбора именно этих пакетов: существуют версии для множества операционных систем, включая Linux.
Установка VisiBroker происходит автоматически, поэтому, скорее всего, проблем не возникнет. Пакет прописывает необходимые ключи реестра Windows, а также модифицирует файл сервисов и переменные среды. Важно лишь помнить, что переменная PATH должна указывать на подкаталог bin основного каталога, где установлен VisiBroker.
Конфигурирование
Прежде чем заниматься настройкой VisiBroker, следует познакомиться с термином «виртуальный домен» и с тем, как его понимают разработчики CORBA-систем. Виртуальный домен — это один или несколько компьютеров, логически объединенных для выполнения некоторой задачи. Виртуальным домен называют потому, что для сетевого администратора его нет, а существует он лишь за счет каких-то установленных пользователями правил. К примеру, в VisiBroker это некий выделенный порт. Так что виртуальный домен можно считать маленькой подсетью внутри основной сети.
Когда разработка ведется не на одном компьютере, а в сети, могут потребоваться дополнительные настройки. Следует обратить внимание на две переменных среды:
· OSAGENT_PORT (по умолчанию равна 14000) служит для настройки виртуальных доменов в рамках локальной сети;
· VBROKER_ADM — системный каталог; обычно это подкаталог adm внутри основного каталога, где установлен VisiBroker; служит для хранения важной информации репозитария интерфейсов, демона активизации объектов и Smart Agent, а также является основным местом хранения конфигурационных файлов.
Настройка этих переменных вручную нужна лишь в UNIX, так как в Windows эти значения хранятся в системном реестре в виде ключей и могут быть изменены в любой момент с помощью утилиты vregedit, поставляемой с VisiBroker.
Значение OSAGENT_PORT важно, когда необходимо изолировать компьютеры, подключенные к одной и той же локальной сети. Кроме того, изменив OSAGENT_ PORT, можно разделить уже работающие на серверах объекты и их неотлаженные версии, «живущие» где-нибудь на компьютере разработчика. Если этого не сделать, то при запросе объекта приложению-клиенту может быть возвращена ссылка на еще «сырой» экземпляр объекта, которая случайно «подвернулась под руку» административной утилите Smart Agent. Напротив, если в локальной сети стандартным является порт 14000, а при разработке новых версий CORBA-объектов переменная OSAGENT_PORT настроена на 14500, можно быть спокойным — приложения не «зацепят» объекты в основном домене, а последние не заберутся в виртуальный домен. Это равносильно тому, что переключена рация на канал, недоступный другим.
Следующий тонкий момент — организация взаимодействия частей CORBA-приложений, находящихся в разных локальных сетях, но связанных друг с другом (для крупных фирм сети со сложной топологией — не редкость). В VisiBroker по умолчанию поиск объектов и балансировку нагрузки выполняют запущенные в сетях экземпляры утилиты Smart Agent. Поэтому, для того чтобы они могли беспрепятственно связываться друг с другом, в каталоге, заданном переменной среды VBROKER_ADM, должен быть файл с именем agentaddr. Внутри него на каждой строчке будет помещаться одно имя или IP-адрес компьютера, на котором запущен другой экземпляр Smart Agent. Редактируя этот список, можно формировать топологию связей объектов. Изменить имя и место файла agentaddr легко, если настроить переменную среды OSAGENT_ADDR_FILE. Все готово к работе с CORBA.
Порядок действий
Создавая CORBA-приложения, нужно помнить, что их модель отличается от модели традиционных монолитных программ и даже клиент-серверных систем, хотя с последними есть и нечто общее. Связку объектов CORBA и клиентов трудно назвать приложением как таковым. Подобные системы похожи на паутину, где все переплетено: клиент может в любую минуту стать сервером, и пользователь вряд ли узнает, с каким сервером объектов он работает в данный отрезок времени, а если проект выполнен грамотно, может даже и не заметить сбоя. Типичная тактика действий программы, использующей технологию CORBA, такова: соединиться с нужным объектом, использовать его функции и отсоединиться от него. И таких атомарных циклов могут быть сотни. Схожая схема принята и в Microsoft COM+, где также приложения как такового нет. Для монолитных приложений все функции зашиты внутри.
Добиться хороших результатов в создании программ на основе CORBA можно, придерживаясь определенного порядка действий:
· объектно-ориентированный анализ и моделирование;
· описание и трансляция объектов;
· создание сервера;
· создание клиента;
· отладка объектов.
Это не аксиома, но опыт подтверждает эффективность данного подхода. Скорее всего, в проекте объекты будут весьма зависеть друг от друга, так что иной раз следует продумать порядок их реализации.