Здравствуйте,при покупке печатной формы сертификата,будут ли выданы обе печатные сторны? |
Средства программной инженерии
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).