Макроподход к задаче распределенной обработки информации называется абстрактной моделью (моделью) этой задачи и функциональной среды, в которой она выполняется. Он основан на понятиях абстрактных объектов, портов, услуг и уточнений. (Понятие абстрактной услуги более полно рассмотрено в разделе 8).
7.1 Абстрактные объекты
Абстрактный объект (объект) - это функциональный логический объект, один из возможно нескольких взаимодействующих объектов. Объекты подразделены на несколько типов в зависимости от их функций и поведения. Объект одного типа может представлять, например, систему, а множество объектов другого типа - ее пользователей. Объекты взаимодействуют друг с другом посредством абстрактных портов.
Тип объекта определяется с помощью макрокоманды OBJECT. Данная спецификация перечисляет типы абстрактных портов, обеспечивающих доступ к такому объекту. Для каждого асимметричного типа порта спецификация определяет, являются ли порты этого типа портами потребителя или портами поставщика.
OBJECT MACRO | :: = |
BEGIN | |
TYPE NOTATION | :: = "PORTS" " {"PortList" } " | empty |
VALUE NOTATION | :: = value (VALUE OBJECT IDENTIFIER) |
PortList | :: = Port "," PortList | Port |
Port | :: = value (PORT) PortType |
PortType | :: = Symmetric | Asymmetric |
Symmetric | :: = empty |
Asymmetric | :: = Consumer | Supplier |
Consumer | :: = "[C]" |
Supplier | :: = "[S]" |
END |
Значение данных типа OBJECT - это объектный идентификатор, однозначно и недвусмысленно идентифицирующий определенный тип объекта.
Примечание - Ключевое слово "OBJECT" зарезервировано в АСН.1. Выбор подходящей замены для использования в настоящем контексте - предмет дальнейшего изучения.
7.2 Абстрактные порты
Абстрактный порт (порт) - это пункт, в котором один абстрактный объект взаимодействует с другим абстрактным объектом. Порты бывают различных типов, определяющих виды допустимых взаимодействий. Например, порты одного типа могут представлять средство, с помощью которого осуществляется доступ к системе справочника, порты другого типа - средство, с помощью которого он административно управляется. Сами типы портов бывают двух разновидностей:
а) симметричные: все порты симметричного типа идентичны;
б) асимметричные: каждый порт асимметричного типа относится к одному из двух видов: поставщик и потребитель.
Примечание - Конкретный смысл терминов "поставщик" и "потребитель" - часто интуитивный. Можно, естественно, рассматривать файловую систему, например для представления портов поставщика его пользователям и администраторам. Но, строго говоря, значение этих двух терминов произвольное.
Два объекта могут взаимодействовать друг с другом через порт одного и порт другого только тогда, когда эти порты взаимодействуют или связаны друг с другом. Действия, посредством которых данное состояние инициируется и завершается в одной или нескольких парах портов, называются связкой и развязкой соответственно.
Два порта могут быть связаны только в случае, если они совместимы. Любые два порта одного и того же симметричного типа совместимы. Два порта одного и того же асимметричного типа совместимы только в том случае, если один из них поставщик, а другой - потребитель.
Тип порта определяется посредством макрокоманды PORT. Такая спецификация идентифицирует абстрактные операции, представляющие взаимодействия, которые возможны при связке двух таких портов. Если ни одной из них нет в списке, абстрактные операции должны рассматриваться как неспецифицированные.
PORT MACRO | :: = |
BEGIN | |
TYPE NOTATION | :: = Operations | empty |
VALUE NOTATION | :: = value (VALUE OBJECT IDENTIFIER) |
Operations | :: = Symmetrical | Asymmetrical |
Symmetrical | :: = "ABSTRACT" "OPERATIONS" " { "OperationList" } " |
Asymmetrical | :: = Onesided | TwoSided |
OneSided | :: = Consumer | Supplier |
TwoSided | :: = Consumer Supplier | Supplier Consumer |
Consumer | :: = "CONSUMER" "INVOKES" " { "OperationList" } " |
Supplier | :: = "SUPPLIER" "INVOKES" " { "OperationList" } " |
OperationList | :: = Operation " , " OperationList | Operation |
Operation | :: = value (ABSTRACT-OPERATION) | |
- - идентифицирующее абстрактную операцию по типу значения данных | |
- - идентифицирующее абстрактную операцию по типу данных | |
END |
Если тип порта - симметричный, оба объекта предлагают все перечисленные абстрактные операции. Если тип порта - асимметричный, макрокоманда определяет различие между абстрактными операциями, которые предлагает объект с портом потребителя, и абстрактными операциями, которые предлагает объект с портом поставщика.
Значение данных типа PORT - это объектный идентификатор, который однозначно и недвусмысленно идентифицирует определенный тип порта.
7.3 Абстрактные услуги
Абстрактная услуга - это набор возможностей, предлагаемых одним объектом другому посредством одного или нескольких его портов. Первый объект называется поставщиком абстрактной услуги (поставщиком), другой - пользователем абстрактной услуги (пользователем). Каждый рассматриваемый порт может быть либо симметричным, либо асимметричным и в последнем случае - либо потребителем, либо поставщиком.
Абстрактная услуга может иметь любое число пользователей и поставщиков.
Когда порты абстрактной услуги поставщика связаны с совместимыми портами пользователя, считается, что между этими двумя объектами существует абстрактная ассоциация (или ассоциация).
Абстрактные услуги определены в разделе 8.
Примечание - Абстрактная услуга выполняет почти ту же задачу в прикладном уровне, которую она выполняет в услугах нижних уровней ВОС.