Л.Е. Карпов - Системы программирования (1114903), страница 31
Текст из файла (страница 31)
Их появлениезаставило разработчиков предпринять меры по интеграции серверов, а для размещенияпрограмм, ответственных за эту интеграцию, наилучшим образом подходилпромежуточный уровень трехуровневых систем. Однако простой интеграциейпреимущества новых систем не ограничиваются. Трехуровневые системы обладаютсвойством масштабируемости в значительно большей степени.
Если системы "клиентсервер" привели к стандартизации интерфейсов прикладного слоя, то их развитиепозволило стандартизовать интерфейсы слоя управления ресурсами, а это привело квозможности интеграции в рамках одной системы самых разнородныхинформационных ресурсов. Возникли даже попытки стандартизовать глобальныесвойства и интерфейсы между разными системными платформами на основе объектноориентированного подхода. Одним из примеров такой стандартизации являетсястандарт брокера объектов CORBA (Common Object Request Broker Architecture).Брокером объектов называют распределенные системы программного обеспечения,основанные на использовании понятия распределенного объекта и модели удаленногообращения к методам этого объекта, являющейся объектно-ориентированнымрасширением модели удаленного вызова процедуры.Стандарт CORBA – это спецификация для создания и управления объектноориентированными приложениями, распределенными в вычислительной сети. Внастоящее время выработано несколько версий стандарта CORBA, первая из которыхбыла разработана в начале 90-х годов консорциумом Open Management Group,включавшим более 800 компаний.
Все эти стандарты описывают только интерфейсы ине содержат никакой реализации.Всякая система, подчиняющаяся спецификации CORBA, состоит из трехосновных частей:••брокер запросов объектов, содержащий базовые функции взаимодействияобъектов.службы CORBA. Набор служб, известный под этим собирательным именем,доступен с помощью стандартизованного прикладного программногоинтерфейса.Службыпредоставляютфункциональность,обычнонеобходимую большинству объектов, например, сохранность, управлениежизненным циклом и безопасность.109•средства CORBA.
Набор средств и инструментов, известный под этимсобирательным именем, предоставляет службы верхнего уровня,необходимые приложениям, а не индивидуальным объектам. Сюда входятуправление документами, интернационализация, поддержка мобильныхагентов. Средства CORBA могут также включать службы, специфичные дляотраслевых рынков, например, образования, здравоохранения илитранспортных перевозок.Чтобы к объекту можно было обратиться через брокер объектов, этот объектдолжен сначала объявить свой интерфейс, из чего клиенты узнают о методах, которыеон предоставляет.
Интерфейсы описываются на языке описания интерфейсов IDL(стандарт CORBA предлагает свой собственный вариант такого языка). СпецификацииIDL транслируются в скелетоны на стороне сервера и в переходники на сторонеклиента.interface Purchasing {float getQuote (in long productId);float purchaseGoods (in long productId,in long quantity)}IDL поставщикаслужбыкомпилятор IDL(клиентская сторона)прикладной объект(клиент)компилятор IDL(серверная сторона)прикладной объект(клиент)прикладной объект(поставщик службы)переходникскелетонинтерфейс динамического обращенияброкер запросов объектов (ORB)репозиторий интерфейсовВ дополнение к описанию методов, в отличие от систем на базе удаленноговызова процедур, язык IDL спецификации CORBA поддерживает множество объектноориентированных концепций, например, наследование и полиморфизм. Спецификации,написанные на IDL CORBA, могут быть переданы компилятору с этого языка, которыйформирует заместителя объекта и скелетон.
Заместитель объекта – это переходник,ответственный за сокрытие распределенности. Программа заместителя содержит в себеописание методов, предоставляемых реализацией объекта. Для получения готовогоклиентского приложения, она должна быть загружена вместе с программой клиента. Сдругой стороны скелетон защищает от проблем распределенности сервер, поэтому110сервер может разрабатываться так, как если бы вызовы к нему поступали из локальногоокружения.
Как заместитель, так и скелетон могут быть написаны на любом из техязыков, которые поддерживаются компилятором с языка IDL CORBA, на которые текстIDL может быть оттранслирован. Например, спецификация CORBA 3 поддерживаеттрансляцию с IDL на Си, Си++, Java, Smalltalk, Аду, Кобол, Лисп, PL/1, Python иIDLScript.Из-за различных способов употребления и различных способов реализацииссылок на объекты в языке Си++, эти ссылки при трансляции отображаются в два типаСи++. Константы IDL отображаются непосредственно в определения констант Си++.Базовые типы данных IDL имеют естественное отображение в типы данных Си++.Структурированные типы данных class, struct, union, sequence отображаютсяв структуры или классы Си++. Массивы отображаются в определения массивов Си++.Операции отображаются в виртуальные методы Си++, имеющие то же имя, что иоперации.Современные версии спецификации CORBA допускают и обратныеотображения: например, в стандарте CORBA 3 прямо предусмотрено проведениеотображения записи интерфейсов на языке Java в записи интерфейсов на IDL.
Обратноеотображение позволяет программистам на языке Java создавать объекты, доступные издругих приложений, написанных (возможно) на других языках программирования.Имеются в виду объекты, имеющие объектную ссылку CORBA и доступ кмежброкерному протоколу IIOP (Internet Inter-ORB Protocol). Конечно, такаявозможность подразумевает введение некоторых ограничений на использование языкаJava (в частности, нельзя использовать параметры inout и out, все выходы в IDLприсутствуют в возвращаемом значении). Обработка программы на языке Javaобратным компилятором позволяет получить эквивалентный интерфейс, написанныйна IDL, имея который, мо жно построить (на языке Java или другом языкепрограммирования) программу клиента CORBA, имеющую доступ к нужному объекту.Чтобы иметь техническую возможность взаимодействовать с некоторымсервером, все, что требуется знать программисту, это IDL-интерфейс этого сервера.Конечно, разработчик должен быть осведомлен о семантике интерфейсов методов идругих ограничениях (например, о специфическом порядке, в котором следуетвызывать методы для достижения той или иной цели).
Эти аспекты не формализованы,их предполагается описывать другими средствами, например, в виде комментариев,вставляемых в IDL-спецификации, или в составе сопроводительной документации.Описанный механизм спецификации CORBA, призванный обеспечиватьспособность к взаимодействию, требует, чтобы клиент был статически привязан кинтерфейсу: компилятор IDL статически генерирует переходник, специфический дляконкретного сервисного интерфейса. Однако модель удаленного обращения к методудопускает динамическое обнаружение новых объектов и построение обращений к нимв процессе работы, даже если для данного клиента не был создан никакой переходник.Эта возможность базируется на двух компонентах: репозитории интерфейсов иинтерфейсе динамического обращения.
Репозиторий интерфейсов хранит определениявсех объектов, известных брокеру ORB. Приложения могут использовать репозиторийдля поиска, редактирования или удаления IDL-интерфейсов. Один брокер может иметьнесколько репозиториев, и несколько брокеров могут иметь доступ к одномурепозиторию. Единственное требование, поставленное в спецификации CORBA,заключается в том, что каждый брокер должен иметь хотя бы один репозиторий.111Возможность динамического построения обращений к методам на основединамически обнаруженных интерфейсов решает только часть проблемыдинамического обращения к службе.
Он предполагает, что клиенты ужеидентифицировали нужную им службу. Для того чтобы это стало возможным, вспецификации CORBA ссылки на сервисные объекты выдаются только службойименования и справочной службой. Отношения между этими двумя службаминапоминают отношения между алфавитными и тематическими каталогами илителефонными справочниками. Служба именования позволяет извлекать ссылки наобъекты, отталкиваясь от их имени, а справочная служба дает возможность клиентамискать службы, основываясь на их свойствах. Службы в свою очередь вносят сведенияо своих свойствах в справочник, при этом разные службы имеют разные свойства,описывающие их нефункциональные характеристики. Используя справочную службу,клиенты могут искать не только объекты, реализующие тот или иной интерфейс, нотакже объекты, свойства которых имеют заданные значения (например, книги по Си).Спецификация CORBA позволяет пользователям систем, построенных на ееоснове, организовывать свои программы в виде служб, предоставляющих услугидругим программам, то есть таким же службам или более традиционно построеннымпрограммам пользователей.
Однако обычно (по аналогии с библиотеками стандартныхпрограмм) вместе с базовой системой (самим брокером CORBA) могутраспространяться программы служб, спецификации которых также стандартизованы.Некоторые из этих служб являются обязательными и распространяются всегда, другиеслужбы, несмотря на стандартность интерфейса, имеют более ограниченноеприменение и распространяются по отдельным соглашениям с пользователями.5.4.