Jump to content

Класс информационного объекта (ASN.1)

ASN.1 Класс информационных объектов — это концепция, широко используемая в спецификациях ASN.1 для решения проблем, связанных со спецификацией протокола, аналогичных проблемам, решаемым спецификациями CORBA/IDL.

Классы информационных объектов используются, например, для указания протокола ROSE (элемент службы удаленных операций) в ASN.1.

Сокращения

[ редактировать ]

Сокращения, используемые в этой статье:

АСН.1
Обозначение абстрактного синтаксиса один
МОК
Класс информационного объекта
iOS
Набор информационных объектов
ИО
Информационный объект
SQL
Язык структурированных запросов
ПЕР
Правила упакованного кодирования
БЕР
Основные правила кодирования
МВУ
Язык определения интерфейса
КОРБА
Общая архитектура брокера объектных запросов
МИОП
Интернет-протокол Inter-ORB

Введение

[ редактировать ]

Самый простой способ рассматривать классы информационных объектов ASN.1 — рассматривать их как способ представления спецификации IDL в ASN.1 с использованием концепций, полученных из теории реляционных баз данных и, в частности, синтаксиса SQL.

Концепции, используемые в ASN.1, более гибкие, чем те, которые используются в IDL, поскольку, продолжая аналогию, они позволяют «настраивать грамматику» «спецификации IDL». Правила кодирования ASN.1 используются в качестве синтаксиса передачи для удаленных вызовов, напоминающих CORBA/IIOP.

В свете этого сравнения мы можем провести приблизительную аналогию между концепциями, используемыми в классах информационных объектов, и концепциями SQL и IDL, как показано в таблице 1.

Таблица 1. Аналогия между концепциями классов информационных объектов ASN.1, SQL и IDL.
Термин АСН.1 Аналогия в SQL Аналогия в IDL

Класс информационных объектов (IOC)

Дескриптор структуры таблицы SQL ( CREATE TABLE Оператор )

Спецификация грамматики IDL (правила BNF)

Полевая декларация МОК

Дескриптор столбца таблицы SQL в Оператор CREATE TABLE (тип столбца)

Создание грамматики IDL

Информационный объект (ИО)

Строка таблицы SQL ( INSERT INTO Оператор )

Декларация операции IDL

Определение поля ввода-вывода

Ячейка строки таблицы SQL в INSERT INTO Инструкция (значение ячейки)

Часть объявления операции IDL, обычно связанная с объявлением кода типа операции, списка параметров, возвращаемого значения операции или списка исключений.

Набор информационных объектов (IOS) (коллекция информационных объектов)

Полностью определенная таблица SQL (набор строк) (см. примечание 1).

Определение интерфейса IDL (набор операций)

Тип данных ASN.1 с использованием ссылок на поля IOC, параметризованные с помощью IOS (обычно коллекция семантически связанных типов, обозначающих запрос, ответ и исключение, параметризованных с помощью одного и того же IOS)

Формат высокого уровня (спецификация грамматики) кадра (буфера сортировки), содержащего запрос, ответ или исключение CORBA.

Правила кодирования ASN.1 и синтаксис передачи (BER, PER)

Низкоуровневое кодирование запросов, ответов и индикаторов исключений, подходящее для физической передачи по среде

Примечание. Аналогия между IOS и таблицей SQL не совсем корректна. SQL допускает только один экземпляр таблицы данного типа (ОПЕРАЦИЯ в примере ниже), в то время как ASN.1 допускает несколько наборов информационных объектов, полученных из одного и того же класса информационных объектов, что наиболее правильно должно быть связано с несколькими экземплярами одной и той же таблицы в терминах SQL (ОПЕРАЦИЯ в примере ниже).

Аналогия на примере

[ редактировать ]

Таблица 2 иллюстрирует пример соответствия концепций ASN.1 аналогичным конструкциям, встречающимся в SQL и IDL.

Таблица 2. Аналогия между концепциями классов информационных объектов ASN.1, SQL и IDL, проиллюстрированная примером
Термин АСН.1 Пример АСН.1 Аналогия в SQL Аналогия в IDL

МОК

OPERATION ::= CLASS
{
&operationCode INTEGER UNIQUE,

&InvocationParsType,

&ResponseParsAndResultType,

&ExceptionList ERROR OPTIONAL
}
CREATE TABLE OPERATION
(
operationCode integer not null unique,

InvocationParsType type_info not null,

ResponseParsAndResultType type_info not null,

ExceptionList ref_to_table(ERROR)
)

(См. примечание 1, поясняющее type_info и ref_to_table.)

Это примерно аналогично части описания BNF некоторого псевдо-IDL-синтаксиса следующей формы (обратите внимание, что в последующих примерах мы будем использовать реальный синтаксис IDL, а не воображаемый синтаксис, определенный BNF ниже):

OPERATION ::= operationCode InvocationParsType ResponseParsAndResultType ExceptionList

operationCode ::= Integer

InvocationParsType ::= Type

ResponseParsAndResultType ::= Type

ExceptionList ::= ERROR

где Integer продукция разрешается к целочисленному значению, Type разрешается в ссылку на тип, и ExceptionList разрешается в экземпляр набора информационных объектов, полученного из ERROR Класс информационного объекта (или список исключений в случае IDL).

ИО

getCustomersNum OPERATION ::=
{
&operationCode get-customers-num-op-type-code,

&InvocationParsType Get-customers-num-req-pars-type,

&ResponseParsAndResultType Get-customers-num-ind-pars-type,

&ExceptionList { wrong-product | wrong-department }
}
INSERT INTO OPERATION VALUES ( $get_customers_num_op_type_code, Get_customers_num_req_pars_type, Get_customers_num_ind_pars_type, Get_customers_num_exc_list )

(Токены, начинающиеся с $, считаются переменными (например, в PHP), и они должны быть заменены реальным значением переменной.)

MyType1 getCustomersNum(
    in MyType2 par1,
    inout MyType3 par2,
    out MyType4 par3)
raises (ExcType1, ExcType2);

iOS

MyWarehouseOps OPERATION ::=
{
    getCustomersNum |
    getPiecesNum |
    appendItem
}

Таблица SQL, определенная с помощью последовательности операторов INSERT.

IDL-интерфейс (сборник операций).

Типы данных ASN.1

Request ::= SEQUENCE
{
invokeId INTEGER,

opcode OPERATION. &operationCode ({MyWarehouseOps}),

req-pars OPERATION. &InvocationParsType ({MyWarehouseOps} {@opcode})
}

Response ::= SEQUENCE
{
invokeId INTEGER,

opcode OPERATION. &operationCode ({MyWarehouseOps}),

rsp-pars OPERATION. &ResponseParsAndResultType ({MyWarehouseOps} {@opcode})
}

Exception ::= SEQUENCE
{
err-code ERROR. &errorCode ({MyErrorSet}),

err-body ERROR. &ErrorBody ({MyErrorSet} {@err-code})
}

(См. примечания 2, 3.)

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

БЕР, ПЕР и т. д.

0110 0111 0010 110...

Низкоуровневое кодирование запросов, ответов и индикаторов исключений.

Примечание 1 . type_info и ref_to_table Типы данных SQL — это мнимые типы данных. Их нет в SQL, и они были введены искусственно, чтобы лучше объяснить концепции ASN.1.

The type_info Тип данных означает, что его значение является ссылкой на тип ASN.1.

The ref_to_table Тип данных означает, что его значение является ссылкой на другой экземпляр таблицы SQL (в данном случае таблицы ERROR). Хотя мы знаем, что в реальном SQL мы не можем иметь несколько экземпляров одной и той же таблицы, давайте для целей точности нашего описания представим, что мы действительно можем.

Примечание 2 . Обозначение @ (например, @opcode) определяет соответствие между полями на основе набора информационных объектов, используемого для параметризации рассматриваемого типа данных. Например, @opcode говорит, что если opcode поле содержит одно значение, затем другое Поля SEQUENCE зависят от opcode поле должно соответствовать opcode ценить. В терминах SQL комбинация типов и значений, образующая допустимый экземпляр этого типа, должна принадлежать одной строке таблицы.

Примечание 3 . Пример спецификации типов данных ASN.1 не определяет никакого формального соответствия между Request, Response, и Exception типы, события, хотя Класс информационных объектов OPERATION, используемый во всех трех типах, определяет корреляцию на семантическом уровне между запросом, ответом и возможными ошибками, тогда как определение операции IDL делает это формально.

Таким образом, пример спецификации формально не обеспечивает соблюдения каких-либо сценариев последовательности сообщений. В отличие от определения операции IDL, соответствие между кадрами не является обязательным и является чисто семантическим, хотя оно может использоваться инструментом ASN.1 в зависимости от инструмента.

Параметризация

[ редактировать ]

Если вы внимательно изучите пример ASN.1, представленный в таблице 2, и сравните его с концепциями IDL, вы увидите одно важное ограничение со стороны ASN.1.

Наши примеры типов данных ASN.1, которые мы согласились сравнить со спецификацией синтаксиса передачи CORBA/IDL высокого уровня, ограничены определением такого синтаксиса передачи только для одного экземпляра того, что мы сравнивали с интерфейсом IDL (набор информационных объектов в ASN). .1 условия).

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

С помощью текущего набора известных инструментов вы не можете определить такой синтаксис передачи общим способом, скажем, в спецификации A ASN.1, а затем повторно использовать его в спецификациях B и C ASN.1, которые определяют конкретные «IDL-интерфейсы» для конкретных приложений. ", от которого А не зависит.

Причина текущего ограничения заключается в том, что в настоящее время мы жестко запрограммировали наш набор информационных объектов ( MyWarehouseOps в случае OPERATION, или MyErrorSet в случае ERROR) в наши типы данных ASN.1 (спецификация синтаксиса передачи высокого уровня).

Теперь нам нужно сделать последний шаг, чтобы получить полноценную и полностью функционирующую систему. Нам необходимо представить концепцию параметризации типов с использованием набора информационных объектов в качестве формального параметра типа.

Вот наш Request type переписан с учетом концепции параметризации:

Request {OPERATION : OpSet} ::= SEQUENCE
{
    invokeId INTEGER,

    opcode OPERATION.&operationCode ({OpSet}),

    req-pars OPERATION.&InvocationParsType ({OpSet} {@opcode})
}

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

Следовательно, теперь мы можем создать его экземпляр для любого набора информационных объектов следующим образом:

Request1 ::= Request{MyWarehouseOps}
Request2 ::= Request{MyOtherSetOfOps}

-- etc.

Предложение With SYNTAX

[ редактировать ]

Предложение With SYNTAX фактически представляет собой крошечный грамматический язык, используемый для выражения способов синтаксического определения информационных объектов.

Рассмотрим следующий пример:

OPERATION ::= CLASS
{
    &opcode INTEGER UNIQUE,
    &InvocationParsType,
    &ResponseParsAndResultType,
    &ExceptionList ERROR OPTIONAL
}
WITH SYNTAX
{
    OPCODE &opcode
    REQUEST ARGUMENTS &InvocationParsType
    RESPONSE ARGUMENTS &ResponseParsAndResultType
    [ERRORS &ExceptionList]
}

Заключение в квадратные скобки ([]) означает необязательность синтаксических конструкций, содержащихся в [].

Опциональность может быть вложенной.

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

Теперь то, что иначе мы бы написали так:

getCustomersNum OPERATION ::=
{
    &operationCode get-customers-num-op-type-code,

    &InvocationParsType Get-customers-num-req-pars-type,

    &ResponseParsAndResultType Get-customers-num-ind-pars-type,

    &ExceptionList { wrong-product | wrong-department }
}

при наличии предложения With SYNTAX можно переписать следующим образом:

getCustomersNum OPERATION ::=
{
    OPCODE get-customers-num-op-type-code,

    REQUEST ARGUMENTS Get-customers-num-req-pars-type,

    RESPONSE ARGUMENTS Get-customers-num-ind-pars-type,

    -- according to BNF in the WITH SYNTAX clause, the following line can be omitted
    ERRORS { wrong-product | wrong-department }
}

Чтобы полностью понять концепцию грамматики, лежащую в основе предложения With SYNTAX, представьте, что мы написали определение класса информационных объектов OPERATION следующим образом:

OPERATION ::= CLASS
{
    &opcode INTEGER UNIQUE,
    &InvocationParsType,
    &ResponseParsAndResultType,
    &ExceptionList ERROR OPTIONAL
}
WITH SYNTAX
{
    &opcode
    &InvocationParsType
    &ResponseParsAndResultType
    [&ExceptionList]
}

Тогда соответствующий экземпляр информационного объекта для приведенного выше определения должен быть определен следующим образом:

getCustomersNum OPERATION ::=
{
    get-customers-num-op-type-code

    Get-customers-num-req-pars-type

    Get-customers-num-ind-pars-type

    { wrong-product | wrong-department }
}
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2db5dee1b2fd25f247f47a5371c3941c__1698578760
URL1:https://arc.ask3.ru/arc/aa/2d/1c/2db5dee1b2fd25f247f47a5371c3941c.html
Заголовок, (Title) документа по адресу, URL1:
Information Object Class (ASN.1) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)