АлексейОстровский...

40
. . . . . . . . . Введение . . . . . . . . . . . . . RPC . . . . Очередь сообщений . . . Заключение Интероперабельность Алексей Островский Физико-технический учебно-научный центр НАН Украины 23 апреля 2015 г. 1 / 33

Upload: others

Post on 27-Jul-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Интероперабельность

Алексей Островский

Физико-технический учебно-научный центр НАН Украины

23 апреля 2015 г.

1 / 33

Page 2: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Проблемы взаимодействия сред выполнения

▶ Байт (8 бит): целое число со знаком (Java) или без знака (C / C++, C#)?

▶ Формат и объем поддержки сложных типов: структур, массивов (как реализованамногомерность?), множеств, перечислений, объединений.

▶ Порядок байтов в сложных объектах: от младшего к старшему или наоборот

(определяется ABI конкретной среды)?

▶ Кодирование строк: в UTF-16 (1 символ = 2 байта, представление данных

в оперативной памяти в Java, C#, …) или UTF-8 (переменная длина символа,

представление при постоянном хранении данных)?

▶ Сжатие данных?

Программная инженерия. Лекция №20 Интероперабельность 2 / 33

Page 3: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Интероперабельность

ОпределениеИнтероперабельность (англ. interoperability) возможность обмениваться данными

для программ, выполняемых в различных операционных средах.

Инструменты достижения интероперабельности:

▶ стандартизация протоколов взаимодействия;

▶ поддержка базовых форматов передачи информации (файлов и т. п.);

▶ использование согласованного представления данных.

Причины использования:

▶ разделение приложения на слабо связанные компоненты в соответствии

с компонентно-ориентированным программированием, разделение «зон

ответственности» разработчиков;

▶ максимизация повторного использования кода;

▶ повышение отказоустойчивости и производительности.

Программная инженерия. Лекция №20 Интероперабельность 3 / 33

Page 4: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Межпроцессное взаимодействие

ОпределениеМежпроцессное взаимодействие (англ. inter-process communication, IPC)спецификации для организации обмена данными между несколькими потоками

выполнения и / или процессами.

Категории:

▶ локальное взаимодействие в пределах одного компьютера;

▶ распределенное в рамках нескольких компьютеров (через сеть).

Уровень:

▶ низкоуровневое взаимодействие средствами операционной системы

(с использованием сведений об ABI);

▶ высокоуровневое с помощью посредника, позволяющего абстрагироваться

от ABI.

Программная инженерия. Лекция №20 Интероперабельность 4 / 33

Page 5: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Спецификация взаимодействия

Способ коммуникации:

▶ файлы;

▶ анонимные / именованные каналы;

▶ сигналы;

▶ разделяемая память;

▶ сокеты;

▶ сообщения.

Формат данных:

▶ бинарный (с согласованной спецификацией);

▶ текстовый (на основе XML, JSON, других форматов).

Программная инженерия. Лекция №20 Интероперабельность 5 / 33

Page 6: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Низкоуровневое взаимодействие: POSIX / System V

Способы обмена данными:

▶ Сигнал пересылка системных сообщений между процессами (обычно

с минимальной нагрузкой данными).

▶ Сокет взаимодействие через физический сетевой интерфейс.

▶ Системная очередь сообщений.

▶ Канал взаимодействия (англ. pipe) двусторонний поток данных, связывающий

ввод / вывод двух процессов с последовательным доступом.

▶ Разделяемая память участок оперативной памяти, доступный для чтения /

записи для нескольких процессов.

Программная инженерия. Лекция №20 Интероперабельность 6 / 33

Page 7: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Низкоуровневое взаимодействие: POSIX / System V

Достоинства:

▶ высокая скорость передачи данных;

▶ широкий круг систем с поддержкой технологии;

▶ минимальная зависимость от стороннего ПО.

Недостатки:

▶ ограниченность одним компьютером (кроме сокетов);

▶ отсутствие спецификации формата данных (⇒ сложно обнаруживаемые

и локализуемые ошибки);

▶ сложность восприятия и модификации программ;

▶ необходимость написания шаблонного кода (англ. boilerplate code).

Программная инженерия. Лекция №20 Интероперабельность 7 / 33

Page 8: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Middleware

ОпределениеПромежуточное программное обеспечение (англ.middleware) ПО,

предоставляющее инструменты для обмена и управления данными

для межпроцессного взаимодействия, которые расширяют встроенные средства

операционной системы.

Достоинства:

▶ стандартизация формата данных⇒ поддержка взаимодействия

между различными языками программирования и ОС;

▶ упрощение процесса разработки, улучшение качества кода;

▶ инструменты для контроля взаимодействия (отладка, профилирование и т. п.).

Программная инженерия. Лекция №20 Интероперабельность 8 / 33

Page 9: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Роль промежуточного ПО в построении приложений

..Компьютер 1.

Компонент(ЯП 1)

.

Интерфейс

. Компьютер 2.

Компонент(ЯП 2)

.

Интерфейс

.

Промежуточное ПО

Промежуточное ПО связывает компоненты, определяя их унифицированный интерфейс для всех поддерживаемыхсред выполнения.

Программная инженерия. Лекция №20 Интероперабельность 9 / 33

Page 10: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Типы промежуточного ПО

Типы промежуточного ПО ≃ парадигмы программирования.

▶ Процедурное программирование удаленный вызов процедур (англ. remoteprocedure call).

Посредник связывает интерфейсы и реализации отдельных процедур.

▶ Объектно-ориентированное программирование посредник доступак объектам (англ. object request broker).

Посредник хранит интерфейсы и реализации объектов, содержащих методы и атрибуты.

▶ Событийно-ориентированное программирование очередь сообщений (англ.

message queue).

Посредник позволяет клиентам производить и потреблять сообщения определенногоформата.

▶ Реляционное программирование доступ к СУБД (англ. SQL data access).

Посредник предоставляет доступ к БД с помощью программных интерфейсов.

Программная инженерия. Лекция №20 Интероперабельность 10 / 33

Page 11: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Характеристики промежуточного ПО

Метод согласования интерфейсов:

▶ на основе отдельного языка спецификации;

▶ с помощью языков программирования (при поддержке ограниченного набора

сред выполнения).

Роли пользователей:

▶ архитектура «клиент сервер»;

▶ однородная среда (peer to peer).

Метод обмена данными:

▶ синхронный (с блокированием выполнения);

▶ асинхронный (без блокирования, т. е. на основе событий).

Программная инженерия. Лекция №20 Интероперабельность 11 / 33

Page 12: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

RPC

ОпределениеУдаленный вызов процедур (англ. remote procedure call, RPC) протокол

межпроцессного взаимодействия, предоставляющий возможность выполнять

процедуры в других процессах как локальные.

ОпределениеУдаленный вызов методов (англ. remote method invocation, RMI) аналог RPC

в объектно-ориентированном программировании.

..Клиент. Stub. ПромежуточноеПО

. Skeleton. Сервер

Программная инженерия. Лекция №20 Интероперабельность 12 / 33

Page 13: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

RPC

ОпределениеУдаленный вызов процедур (англ. remote procedure call, RPC) протокол

межпроцессного взаимодействия, предоставляющий возможность выполнять

процедуры в других процессах как локальные.

ОпределениеУдаленный вызов методов (англ. remote method invocation, RMI) аналог RPC

в объектно-ориентированном программировании.

..Клиент. Stub. ПромежуточноеПО

. Skeleton. Сервер.

преобразует параметры вызываемых процедурдля передачи промежуточному ПО (англ.marshalling)

Программная инженерия. Лекция №20 Интероперабельность 12 / 33

Page 14: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

RPC

ОпределениеУдаленный вызов процедур (англ. remote procedure call, RPC) протокол

межпроцессного взаимодействия, предоставляющий возможность выполнять

процедуры в других процессах как локальные.

ОпределениеУдаленный вызов методов (англ. remote method invocation, RMI) аналог RPC

в объектно-ориентированном программировании.

..Клиент. Stub. ПромежуточноеПО

. Skeleton. Сервер.

преобразует сообщения от промежуточного ПОв локальные вызовы (англ. unmarshalling)

Программная инженерия. Лекция №20 Интероперабельность 12 / 33

Page 15: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Виды RPC

Процедурный и смешанный подход:

▶ JSON-RPC;

▶ XML-RPC, SOAP.

Объектно-ориентированный подход:

▶ CORBA;

▶ Java RMI;

▶ Microsoft .NET Remoting, Microsoft DCOM;

▶ Apache Thrift;

▶ ZeroC Internet Communication Engine (ICE).

Программная инженерия. Лекция №20 Интероперабельность 13 / 33

Page 16: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

CORBA

ОпределениеCORBA (common object request broker architecture) набор спецификаций,

разработанных Object Management Group (OMG) для обеспечения обмена данными

на основе объектно-ориентированных интерфейсов.

Составляющие CORBA:

▶ язык описания интерфейсов объектов (OMG interface description language, IDL);

▶ отображение типов данных IDL для различных языков программирования;

▶ протокол передачи данных: general inter-orb protocol (GIOP) и его реализация

через HTTP Internet inter-orb protocol (IIOP);

▶ вспомогательные средства для передачи (stub / skeleton);

▶ инструменты, напр., сервис имен.

Программная инженерия. Лекция №20 Интероперабельность 14 / 33

Page 17: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Схема работы CORBA

..Код клиента.

Интерфейсобъекта

.

Stub

.

Посредник доступак объектам (ORB)

. Код сервера.

Имплементацияобъекта

.

Skeleton

.

Посредник доступак объектам (ORB)

.

сетевое соединение

Программная инженерия. Лекция №20 Интероперабельность 15 / 33

Page 18: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Схема работы CORBA

..Код клиента.

Интерфейсобъекта

.

Stub

.

Посредник доступак объектам (ORB)

. Код сервера.

Имплементацияобъекта

.

Skeleton

.

Посредник доступак объектам (ORB)

.

сетевое соединение

.

код, предоставляемый поставщиком ORB

Программная инженерия. Лекция №20 Интероперабельность 15 / 33

Page 19: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Схема работы CORBA

..Код клиента.

Интерфейсобъекта

.

Stub

.

Посредник доступак объектам (ORB)

. Код сервера.

Имплементацияобъекта

.

Skeleton

.

Посредник доступак объектам (ORB)

.

сетевое соединение

.

код, предоставляемый поставщиком ORB

Программная инженерия. Лекция №20 Интероперабельность 15 / 33

Page 20: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Схема работы CORBA

..Код клиента.

Интерфейсобъекта

.

Stub

.

Посредник доступак объектам (ORB)

. Код сервера.

Имплементацияобъекта

.

Skeleton

.

Посредник доступак объектам (ORB)

.

сетевое соединение

.

код, генерируемый утилитамиот поставщика ORB

Программная инженерия. Лекция №20 Интероперабельность 15 / 33

Page 21: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Схема работы CORBA

..Код клиента.

Интерфейсобъекта

.

Stub

.

Посредник доступак объектам (ORB)

. Код сервера.

Имплементацияобъекта

.

Skeleton

.

Посредник доступак объектам (ORB)

.

сетевое соединение

.

код, генерируемый утилитамиот поставщика ORB

Программная инженерия. Лекция №20 Интероперабельность 15 / 33

Page 22: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Схема работы CORBA

..Код клиента.

Интерфейсобъекта

.

Stub

.

Посредник доступак объектам (ORB)

. Код сервера.

Имплементацияобъекта

.

Skeleton

.

Посредник доступак объектам (ORB)

.

сетевое соединение

.

код, генерируемый утилитамиот поставщика ORB

Программная инженерия. Лекция №20 Интероперабельность 15 / 33

Page 23: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Генерация кода в CORBA

В CORBA предусмотрены инструменты, которые автоматически генерируют:

▶ интерфейс объекта на поддерживаемом ЯП на основе IDL-описания;

▶ IDL-описание на основе интерфейса / класса поддерживаемого ЯП;

▶ stub (клиентский вспомогательный код) на основе IDL, который:▶ реализует интерфейс объекта;▶ адресует вызовы методов посреднику и обрабатывает получаемые результаты.

▶ skeleton (серверный вспомогательный код) на основе IDL, который:▶ реализует интерфейс объекта;▶ является основой для построения имплементации;▶ преобразует принятые от посредника данные.

Программная инженерия. Лекция №20 Интероперабельность 16 / 33

Page 24: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Реализации CORBA

Системы, поддерживающие архитектуру CORBA:

▶ Java Development Kit, как альтернатива / дополнение для Java RMI;

▶ WildFly (ранее JBoss) (Java);

▶ omniORB (C++, Python);

▶ ORBit (C, Python);

▶ IIOP.NET (C# и другие языки MS .NET; поддерживаются не все стандарты).

Несмотря на объектную ориентацию CORBA, для реализации сервисов и клиентов

можно использовать другие подходы (напр., процедурное программирование в C).

Программная инженерия. Лекция №20 Интероперабельность 17 / 33

Page 25: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

IDL

ОпределениеЯзык описания объектов (англ. interface description language / interface definitionlanguage) частный случай языка спецификации, служащий для описания интерфейса

объекта независимым от языка реализации способом.

..Интерфейс (IDL).

Интерфейс (ЯП 2)

.

Реализация

.

Сервер

..

Интерфейс (ЯП 1)

.

Вызовы методов

.

Клиент

.

Промежуточное ПО содержит средства для преобразования от конкретных ЯП к IDL и обратно.

Программная инженерия. Лекция №20 Интероперабельность 18 / 33

Page 26: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

OMG IDL

Типы данных:▶ базовые типы данных:

▶ булев тип;▶ целые числа 2, 4, 8 байт со знаком и без;▶ байты;▶ 32-, 64- и 96/128-битные числа с плавающей запятой;▶ символы и строки ASCII и UTF-16);

▶ конструкции:▶ структуры (англ. struct),▶ перечисления (англ. enum),▶ маркированные объединения (англ. tagged union);▶ массивы (фиксированное число элементов);▶ последовательности (ограниченное сверху или произвольное число элементов);

Программная инженерия. Лекция №20 Интероперабельность 19 / 33

Page 27: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

OMG IDL

Типы данных (продолжение):

▶ исключения (∼ структуры с особой семантикой);

▶ интерфейсы объектов, содержащие:▶ операции (∼ методы), характеризующиеся входными / выходными параметрами,

возвращаемым типом и исключениями;▶ атрибуты (∼ свойства), в т. ч. только для чтения;

▶ any (произвольный объект);

▶ типы, передаваемые по значению (англ. valuetype) ∼ классы в ООП (поля +

методы); методы выполняются на стороне клиента.

Программная инженерия. Лекция №20 Интероперабельность 20 / 33

Page 28: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

OMG IDL

Характеристики языка:

▶ декларации типов (в т. ч. вложенные), именованные константы;

▶ наследование интерфейсов (в т. ч. множественное);

▶ модули для группировки связанных интерфейсов;

▶ наличие препроцессора, возможность условной компиляции;

▶ подключение деклараций из других IDL-файлов.

Привязки к языкам программирования:

▶ C++;

▶ Java;

▶ Python;

▶ Ruby;

▶ C# и другие языки CLR (неполные).

Программная инженерия. Лекция №20 Интероперабельность 21 / 33

Page 29: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Пример: интерфейс числовой последовательности1 // Типы ответов на запрос члена последовательности.2 enum ResponseType {3 t_int, // целое число, занимающее 4 байта4 t_string, // строка произвольной длины5 t_error // сообщение об ошибке6 };7

8 // Объединение ответ на запрос.9 union Response switch(ResponseType) {10 case t_int: long intVal;11 case t_string: string stringVal;12 case t_error: string message;13 };14

15 interface IntegerSequence {16 readonly attribute string name;17 readonly attribute string description;18 readonly attribute long maxIndex;19 // Возвращает член послеовательности с заданным индексом.20 Response number(in long index);21 };

Программная инженерия. Лекция №20 Интероперабельность 22 / 33

Page 30: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Модули ORB

▶ Сервис имен идентификация объектов по имени (≃URI), состоящем из ⩾ 0

контекстов (директорий) и названия (и, возможно, типа) объекта.

Применение: упрощение доступа к объектам.

▶ POA (portable object adapter) разделение реализации объекта на 2 части:▶ CORBA-совместимый объект код, связанный с преобразованием данных;▶ слуга (англ. servant) реализация методов и атрибутов объекта.

Применение: динамический подбор реализации (напр., в зависимости от метода);

балансировка нагрузки.

▶ Репозиторий интерфейсов содержит все зарегистрированные в CORBA

определения типов.

Применение: получение динамических сведений о структуре объектов.

Программная инженерия. Лекция №20 Интероперабельность 23 / 33

Page 31: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Объекты CORBA

CORBA предоставляет доступ к объектам в виде ссылок. Интерфейс ссылки состоит

из 2 частей:

▶ интерфейс, определенный в IDL;

▶ базовый интерфейс CORBA::Object.

Методы базового интерфейса:

▶ динамическое определение интерфейса: get_interface, repository_id, is_a;

▶ копирование и удаление ссылок на объект (для управления сборкой мусора):

duplicate, release;

▶ тестирование доступности объекта: is_nil, non_existent;

▶ сравнение объектов: is_equivalent, hash;

▶ приведение типов: narrow.

Программная инженерия. Лекция №20 Интероперабельность 24 / 33

Page 32: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Пример: работа с удаленным объектом в Python

1 # Создать посредник доступа к объектам.2 orb = CORBA.ORB_init([], CORBA.ORB_ID)3 # Получить стандартный сервис имен CORBA.4 name_service = orb.resolve_initial_references("NameService")5 # Привести полученный объект к правильному типу6 # (в Python приведение предназначено для проверки типа объекта).7 name_service = name_service._narrow(CosNaming.NamingContextExt)8

9 name = "test-service" # имя зарегистрированного сервиса10 # Найти сервис по имени.11 seq = name_service.resolve_str(name)12 seq = seq._narrow(IntegerSequence)13 # Проверить, доступен ли сервис.14 if seq._non_existent(): raise Exception("Service unavailable")15

16 # При переходе от IDL к Python атрибуты преобразуются в функции17 # _get_<имя атрибута> и _set_<имя атрибута>.18 print seq._get_name()

Программная инженерия. Лекция №20 Интероперабельность 25 / 33

Page 33: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Очередь сообщений

ОпределениеОчередь сообщений (англ.message queue, mailbox) вид межпроцессного

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

loosely coupled).

▶ Роли сторон

RPC: ассиметричные клиент (потребитель) и сервер (реализация);

MQ: симметричные каждый клиент может получать и отправлять сообщения.

▶ Связь

RPC: сильная клиент знает интерфейс сервера;

MQ: слабая получатель знает только формат сообщений.

▶ Передача данных

RPC: синхронная по запросу клиента; сервер должен быть активен на момент

запроса.

MQ: асинхронная сообщения хранятся в очереди до доставки клиенту.

Программная инженерия. Лекция №20 Интероперабельность 26 / 33

Page 34: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Характеристики очередей сообщений

Преимущества по сравнению с RPC:

▶ отсутствие необходимости спецификации интерфейсов компонентов;

▶ быстрая замена и модификация компонентов;

▶ нет необходимости в одновременном функционировании всех компонентов;

▶ возможность построения сложной архитектуры поставщиков и потребителей

сообщений.

Недостатки:

▶ асинхронная модель подходит не для всех архитектур приложений (напр.,

малопригодна для систем реального времени);

▶ затраты на организацию и обеспечение отказоустойчивости брокера сообщений.

Программная инженерия. Лекция №20 Интероперабельность 27 / 33

Page 35: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Организация очереди сообщений

..Очередь.

Клиент 1

.

Брокер сообщений

.

Клиент 2

..

отправка

.прием

.

подтверждение

Организация очереди сообщений в формате point-to-point (PTP):

▶ один потребитель для каждого сообщения;

▶ асинхронная работа отправителя и приемника;

▶ сохранение сведений о приеме сообщений.

Программная инженерия. Лекция №20 Интероперабельность 28 / 33

Page 36: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Организация очереди сообщений

..Тема (topic).

Клиент 1

.

Брокер сообщений

. Клиент 2.Клиент 3 ..

отправка

.

прием

.

подписка

.

прием

.

подписка

Организация очереди сообщений в формате publish / subscribe:

▶ неограниченное количество потребителей для каждого сообщения;

▶ прием сообщений потребителями только в периоды активности (сообщения

не «откладываются»).

Программная инженерия. Лекция №20 Интероперабельность 29 / 33

Page 37: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Реализации очереди сообщений

Java Message Queue стандарт обмена сообщениями в Java, часть Java Enterprise

Edition (Java EE).

Реализации:

▶ Apache ActiveMQ;

▶ OpenMQ (часть сервера приложений Glassfish);

▶ IBM WebSphere MQ.

AMQP (advanced message queuing protocol) протокол передачи сообщений на уровне

приложения.

Реализации:

▶ Apache Qpid;

▶ RabbitMQ;

▶ Microsoft Azure Service Bus;

▶ ZeroMQ.

Программная инженерия. Лекция №20 Интероперабельность 30 / 33

Page 38: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Выводы

1. Интероперабельность технологии взаимодействия между компонентами

программной системы, написанными и выполняемыми в различных средах.

Близкое к интероперабельности понятие межпроцессное взаимодействие (IPC).

2. Низкоуровневые средства для межпроцессного взаимодействия встроены

во все операционные системы. Высокоуровневые методы IPC используют

промежуточное ПО (middleware).

3. Есть две основные категории промежуточного ПО: на основе процедур / объектов

и на основе сообщений.

4. Одним из наиболее полных стандартов промежуточного ПО является CORBA,

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

Программная инженерия. Лекция №20 Интероперабельность 31 / 33

Page 39: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Материалы

Лавріщева К.М.

Програмна інженерія (підручник).

К., 2008. 319 с.

Object Management Group

CORBA specifications.

http://www.omg.org/spec/

Oracle

The Java EE Tutorial. Chapter 45 "Java Message Service Concepts".

http://docs.oracle.com/javaee/7/tutorial/jms-concepts001.htm

Программная инженерия. Лекция №20 Интероперабельность 32 / 33

Page 40: АлексейОстровский 23апреля2015г.lectures.ostrov.ski/assets/pdf/24-interoperability-beamer.pdf · Введение..... rpc.... Очередьсообщений

. . . . . . . . .Введение

. . . . . . . . . . . . .RPC

. . . .Очередь сообщений

. . .Заключение

Спасибо за внимание!

Программная инженерия. Лекция №20 Интероперабельность 33 / 33