Спонсор: Microsoft
Московский физико-технический институт
Опубликован: 24.09.2008 | Доступ: свободный | Студентов: 2633 / 769 | Оценка: 4.52 / 4.48 | Длительность: 25:15:00
Специальности: Системный архитектор
Лекция 13:

Средства программной инженерии

12.3.2. Язык описания интерфейсов объектов

Язык IDL предназначен для описания типов данных, интерфейсов объектов и модулей, которые вызываются для выполнения, а также предоставляет средства для описания параметров объектов, передаваемых в сообщении другим объектам. В этом языке описываются интерфейсные программы клиента и сервера (клиентstub и серверskeleton), а сами программы клиента и сервера описываются языками С++ или JAVA.

Описание интерфейсов начинается заголовком, который начинается ключевым словом interface и идентификатором интерфейсной программы. Тело этой программы содержит описание типов параметров для обращения к объекту, а именно: типов данных ( type_dcl ), констант ( const_dcl ), исключительных ситуаций ( except_dcl ), атрибутов параметров ( attr_dcl ) и операций ( op_dcl ).

Пример описания заголовка описания интерфейса:

interface A { ... } 
interface B { ... } 
Interface C: B,A { ... }.

Описание типов данных начинается ключевым словом typedef, за которым следует базовый или конструируемый тип и его идентификатор. В качестве константы может быть некоторое значение типа данного или выражение, составленное из констант. Типы констант могут быть: integer, boolean, string, float, char и др.

Описание операций op_dcl включает: атрибуты операции, тип результата, наименование операции интерфейса, список параметров (от нуля и более) и др.

Атрибуты параметров могут начинаться следующими служебными словами:

in - при отсылке параметра от клиента к серверу;

out - при отправке параметроврезультатов от сервера к клиенту;

inout - при передаче параметров в оба направления (от клиента к серверу и от сервера к клиенту).Описание интерфейса может наследоваться другим объектом, тогда такое описание интерфейса становится базовым. Пример базового интерфейса приведен ниже:

const long l=2 
interface A {
     void f (in float s [l]); 
    } 
interface B {
     const long l=3 
    }
interface C: B,A { }.

В нем интерфейс С использует интерфейс B и А и их типов данных, которые по отношению к С - глобальные. Имена операций могут использоваться во время выполнения интерфейсного посредника (skeleton) для динамического вызова интерфейса. Пример описания интерфейса для динамического вызова приведен ниже:

interface Vlist { 
status add_item (
      in Identifier item_name, 
      in typeCode item_type, 
      in void * value, in long  value_len, 
      in Flags    item_flags 
     ); 
status free ( ); 
status free_memory( ); 
status get_count ( 
      out long count); 
     };

Если в языке IDL описывается модуль, то он начинается с ключевого слова module, за которым следует имя модуля и описание его тела.

Средства описания типов.Типы данных подразделяются на базовые, конструируемые и cсылочные.

К базовым типам относятся фундаментальные типы данных:

  • 16- и 32-битовые (короткие и длинные) знаковые и беззнаковые двухкомпонентные целые;
  • 32- и 64-битовые числа с плавающей запятой, что соответствует стандарту IEEE;
  • cимвольные;
  • 8-битовый непрозрачный тип данных, обеспечивающий преобразование данных в момент пересылки между объектами;
  • булевые ( TRUE, FALSE );
  • строка, которая состоит из массива одинаковых длин символов, допустимых во время выполнения;
  • перечисляемый тип, включающий упорядоченную последовательность идентификаторов;
  • произвольный тип any, который представляет любой базовый или конструируемый тип данных.

Конструируемые типы создаются из базовых типов и включают:

  • запись, состоящую из множества упорядоченных пар (имязначение);
  • структуру, состоящую из совокупности разнородных базовых элементов;
  • различительное объединение, содержащее дискриминатор, за которым располагается подходящий тип и значение;
  • последовательность, представляющую собой массив, компоненты которого имеют переменную длину и одинаковый тип;
  • массив, состоящий из компонентов фиксированной длины одинакового типа;
  • интерфейсный тип, специфицирующий множество операций, которые клиент может послать в запросе.

Каждому типу данных соответствует значение, которое задается в запросе клиента или объекта, отправляющего ответ на запрос.

12.3.3. Интегратор объектных запросов

Роль интегратора объектов в системе CORBA выполняет брокер ORB и механизм удаленного вызова. Объекты определяют свойства, характеристики и типы данных. Если объекты обладают одинаковыми свойствами, то они группируются в классы. Каждому объекту соответсвует одна или несколько операций вызова его методов. После выполнения операции объект приобретает некоторое состояние, которое влияет на его поведение. Эталонная модель включает:

  • язык IDL и транслятор интерфейса компонентов приложений (Application Interface);
  • общий объектный сервис (Common Object Services) для управления событиями, транзакциями, интерфейсами, запросами и др.;
  • общие средства (Common facilities), необходимые для групп компонентов и приложений (электронная почта, телекоммуникация, управления информацией, эмулятор программ и др.);
  • брокер объектных запросов;

При выполнении сервисных функций брокер ORB запрашивает сервисы для объектов или приложений. Общая характеристика сервисов приведена ниже.

Общие объектные сервисы обеспечивают базовые операции для логического моделирования и физического хранения объектов, определяют совокупность операций, которые могли бы реализовывать или наследовать все классы. Сервисы объектов описываются с помощью спецификации (Common Object Services Spesification), в которой определяется набор объектов, их имена, события, взаимодействие и т.п. Операции, предоставляемые объектными сервисами через ORB, поддерживают работу с объектами, их существование и независимость от приложений, которые к ним обращаются.

Общие средства обслуживания облегчают построение приложений для функционирования в среде ORB. Для конечных пользователей эти средства обеспечивают унифицированную семантику общих компонентов и взаимодействие с другими объектами посредством брокера ORB и объектного интерфейса.

Объектные приложения - это приложения, разрабатываемые независимыми разработчиками на основе объектного подхода в виде связанного набора прикладных функций, имеют доступ к сервису и услугам CORBA через стандартный интерфейс.

Каждому объекту приложения соответствует метод, который реализует некоторую функцию, имеет доступ к другим объектам и изменяет данные, создает результат. Параметры метода могут быть классифицированы так:

іn - параметр (Input) для описания входных констант, массивов, ссылок и т.п.;

іn - атрибут класса, который не изменяется методом;

out - параметр - значение, которое возвращает первичный и вторичный метод либо изменяет метод;

іn - вторичный параметр служит для возврата результата первичному методу, аналогично оut -параметрам. Объект сервера считается in -вторичным, если метод прямо или косвенно изменяет его состояние. Влияние метода на изменение состояния объектов отмечается комбинацией классов его параметров: не меняющих состояние, изменяющих состояние непосредственно (прямо). Типичные случаи таких комбинаций можно рассматривать как паттерны [12.10] или потоки данных (data flow).

Максим Цапко
Максим Цапко

Я наконец закончил курс "Управление ИТ-проектами". Как получить документ об окончании курса.

давайн Нкунда
давайн Нкунда
Владимир Карпенко
Владимир Карпенко
Украина, Киев, Национальный Авиационный Университет, 2009
Михаил Адигеев
Михаил Адигеев
Россия