Ее непосредственный конкурент, Inprise, успел выпустить свой знаменитый, совместимый со спецификацией CORBA 2.3, пакет VisiBroker 4 для языков Cи++ и Java (включая версии для Linux), а IONA не торопится, действуя, как и все последние девять лет, по принципу «семь раз отмерь, один — отрежь». Однако IONA доказала, что способна фокусироваться на выбранном сегменте рынка, и сейчас это позволяет ей пожинать плоды своей приверженности разработке корпоративных продуктов.
Следует отметить, что в консорциуме OMG, определяющем стандарты всех составляющих технологии CORBA, компания IONA всегда играла далеко не последнюю роль при создании методик распределенных вычислений в современных продуктах на основе CORBA.
Посмотрим, какие ключевые изменения были внесены в новый продукт IONA — Orbix 2000. Поскольку Orbix 2000 1.1, включающий в себя поддержку языка Java, находится в стадии финального тестирования, разговор о его особенностях еще впереди.
Что такое ART
Раз уж технология CORBA сама «проповедует» модульность и разбиение на отдельные составляющие, то и объектные брокеры запросов (ORB) вместе с их окружением следует делать по этой технологии. Так, Orbix 2000 строится по архитектуре ART (Adaptive Runtime Technology), предполагающей сборку объектной среды из базовых составляющих CORBA, основных сервисов и подключаемых модулей (plug-ins) — библиотек кода, подгружаемых в приложения на базе Orbix 2000 либо во время сборки, либо непосредственно во время исполнения. Причем в последнем случае подключаемый модуль может быть использован тогда, когда в нем действительно есть необходимость. Как сообщают представители IONA, скоро появится набор Plug-in Toolkit, с помощью которого разработчики смогут создавать собственные подключаемые модули, благо вместе с Orbix 2000 уже сейчас можно получить IDL-описания всех объектов архитектуры ART.
Примером подключаемого модуля может служить система протоколирования диагностических событий Orbix 2000. При разработке программного обеспечения может понадобиться протоколировать сообщения стандартного потока вывода (stdout). В принципе не сложно перенаправить все тексты в файл операцией > и получить протокол. Но для современных операционных систем (таких, как Windows NT и UNIX) это будет выглядеть анахронизмом, поскольку они содержат службы ведения протокола. Если требуется воспользоваться ими, в традиционных приложениях вы будете писать текст перенаправления, в то время как подключаемые модули Orbix позволяют легко перехватить текстовый вывод и перенаправить его непосредственно в нужную службу (к примеру, syslogd для UNIX). Причем эта операция занимает несколько минут: достаточно в файле конфигурации указать имя другого подключаемого модуля. Не правда ли, принцип конструктора Lego — хорошая штука? Особенно если учесть, что в Orbix 2000 все, что только можно, выполнено в виде модулей, и запас их довольно велик.
Домены
Как правило, устанавливая ПО, разработчики наталкиваются на одну и ту же проблему: как сделать так, чтобы приложение было сконфигурировано по-разному для отдельных подразделений предприятия. Принципиально сложного здесь ничего нет — ходи от компьютера к компьютеру и настраивай требуемые параметры. Однако этот подход реален только при условии, если компьютеров мало. А взять фирму побольше, так администратор будет непрерывно бродить по ней и вместо работы то и дело заменять настройки среды. Поэтому большинство CORBA-инструментов, в том числе и Orbix 2000, «смотрят» на сетевые ресурсы распределенной системы как на набор доменов — условных единиц, группирующих схожие по функциям и настройкам хосты и обладающих уникальным именем. В Orbix 2000 они называются доменами конфигурации (configuration domains).
Настраивать домены конфигурации Orbix 2000 можно двумя способами. Первый заключается в создании файлов конфигурации: с помощью утилиты configure создается файл с записанными в него параметрами, после чего он копируется на каждый хост конфигурационного домена. Для больших систем Orbix 2000 позволяет сохранять доменные параметры на специальном сервере, к которому все хосты конфигурационного домена имеют доступ. Преимущество такого варианта очевидно — для смены настроек всех хостов домена достаточно изменить информацию, хранящуюся в единственном экземпляре на сервере домена.
Orbix 2000 использует еще и домен местоположения (location domain). В этом случае все хосты, независимо от настроек, работают под управлением одного и того же демона местоположения (location daemon). Последний тесно связан с репозитарием реализаций (implementation repository, или IMR), хранящим данные о доступных CORBA-серверах, и демоном активации (activator daemon), автоматически запускающим нужный сервер по ссылке на требуемый объект.
Распределение нагрузки
Любая распределенная система характеризуется умением нагружать свои хосты работой равномерно. Для этого даже имеется специальный термин «распределение нагрузки» (load balancing). Orbix 2000 еще пока что не умеет выполнять подобные задачи с помощью демона местоположения, но обещает «заделать» эту брешь в будущих версиях.
Вариант распределения нагрузки Orbix 2000 основан на способности службы именования (naming service) присваивать одно и то же имя сразу нескольким одинаковым серверам независимо от их местоположения. Каждый раз, когда требуется получить ссылку на объект с данным именем, будут вызываться разные объекты из группы. Для выбора того или иного экземпляра объекта применяется алгоритм «карусель» (round robin), т. е. объекты вызываются в заранее определенном порядке друг за другом.
Новые сервисы
В составе Orbix 2000 появились два новых сервиса. Но если быть точным, один из них, сервис транзакций (transaction service), нельзя назвать новым — слава богу, уже третья версия! Просто ранее он поставлялся как отдельный продукт и назывался Orbix Transaction Manager (OTM). Отныне он входит в поставку Orbix 2000 и может работать без дополнительного конфигурирования.
Так что обратим наше внимание на сервис продолжительного существования (Persistent State Service, или PSS). Вот уж незаурядная вещица! О том, что она будет реализована, говорят уже давно и многие. Но пока только IONA Technologies решилась ввести этот элемент в свой пакет.
PSS представляет собой абстрактную «прослойку» между серверами CORBA и данными продолжительного существования (persistent data). Для поддержки PSS имеется специальный язык. Он задает связь между хранилищами данных и самими объектами. Работая с подобными объектами, программа неявно изменяет данные в связанной с объектами базе.
Применений PSS великое множество. Взять хотя бы сокрытие деталей доступа к данным от клиентов CORBA-серверов или реализацию отказоустойчивых объектов, когда состояние одного из них проецируется в таблицу БД, а в случае аварии любой другой объект схожего класса может считать «посмертный снимок» безвременно почившего сородича и заменить его. При этом для программы-клиента процесс переключения незаметен. Кроме того, в Orbix 2000 PSS используется в службах именования, транзакций и репозитарии интерфейсов (IR). Поэтому они благополучно могут переживать поломки и перезагрузки хостов.
Автоматизация разработки
Пакет Orbix 2000 предполагает создание как серверов, так и клиентов CORBA, что в общем-то и является основной задачей многих программистов. Но можно и разрабатывать модули, генерирующие исходные тексты по IDL-описаниям.
Специальный мастер, автоматически встраиваемый в Microsoft Visual Studio и использующий в качестве компилятора Visual C++ 6.0 (см. рисунок), достаточно интеллектуален для того, чтобы создать каркас нового распределенного приложения.
На решение задач конкретного предприятия нацелен IONA Code Generation Toolkit. Главная часть этого инструмента, входящего в комплект поставки Orbix 2000, — компилятор IDL, интегрированный со скриптовым языком Tcl. Те разработчики, которым поручено следить за обновлением средств программирования, могут использовать Code Generation Toolkit для написания собственных скриптов автоматической генерации повторяющихся кусков исходных текстов.
* * *
Давать общую оценку таким системам, как Orbix 2000, весьма сложно. При сравнении производительности оказывается, что разные средства по-разному справляются с определенным набором задач, а функциональность Orbix 2000 невозможно поставить выше или ниже, скажем, Inprise VisiBroker 4 из-за чрезвычайной схожести этих продуктов. Жесткое следование стандартам CORBA делает свое дело, и, похоже, это не дает производителям распределенного ПО отступить от намеченной линии движения — перевода всего программного обеспечения в компонентный вид.