Открыть сервис

DIIOP

DIIOP (Distributed Internet Inter-ORB Protocol, распределённый межсетевой протокол ORB) — это протокол прикладного уровня, предназначенный для взаимодействия между объектными запросами брокерами (ORB) в распределённых вычислительных средах. Он является расширением протокола IIOP (Internet Inter-ORB Protocol), который, в свою очередь, реализует спецификацию CORBA (Common Object Request Broker Architecture) для передачи вызовов удалённых процедур через сеть TCP/IP. DIIOP обеспечивает возможность динамического вызова методов удалённых объектов, когда интерфейс вызываемого объекта неизвестен на этапе компиляции клиентского приложения.

История и происхождение

Протокол DIIOP был разработан в рамках спецификации CORBA, созданной консорциумом Object Management Group (OMG). CORBA, появившаяся в начале 1990-х годов, ставила целью создание стандартизированной платформы для взаимодействия разнородных систем, написанных на разных языках программирования и работающих на разных операционных системах. Основой для удалённого вызова процедур в CORBA стал протокол GIOP (General Inter-ORB Protocol), который определяет общий формат сообщений и правила их обработки. Для передачи через TCP/IP был разработан IIOP, а DIIOP стал его надстройкой, реализующей динамический вызов.

Развитие DIIOP было связано с необходимостью гибкости в распределённых системах, где клиент не может заранее знать все возможные интерфейсы серверных объектов. В отличие от статического вызова (через прокси-объекты, сгенерированные на этапе компиляции), DIIOP позволяет клиенту конструировать запросы «на лету», используя информацию из репозитория интерфейсов (Interface Repository). Эта возможность была особенно востребована в крупных корпоративных информационных системах, где количество сервисов и их версий могло быть очень большим.

Архитектура и принцип работы

DIIOP функционирует на основе модели «клиент-сервер», где клиентское приложение инициирует запрос к удалённому объекту, размещённому на сервере. Протокол использует транспортный уровень TCP/IP для надёжной доставки сообщений. Сообщения DIIOP упаковываются в формат GIOP, который включает заголовок, содержащий версию протокола, флаги, длину сообщения и идентификатор операции.

Основные компоненты DIIOP:

Процесс вызова через DIIOP включает следующие шаги:

  1. Клиент получает ссылку на удалённый объект (IOR, Interoperable Object Reference), которая содержит адрес сервера, идентификатор объекта и информацию о протоколе.
  2. Клиент обращается к репозиторию интерфейсов для получения описания интерфейса объекта.
  3. Клиент формирует запрос DII, заполняя структуру данных с именем метода и аргументами.
  4. Запрос отправляется через IIOP на сервер, где DSI принимает его и передаёт объекту.
  5. Сервер выполняет метод и возвращает результат клиенту.

Отличия от IIOP

Основное отличие DIIOP от IIOP заключается в способе вызова методов. IIOP предполагает статический вызов, при котором клиент использует заранее сгенерированные прокси-объекты (stubs), скомпилированные из описания интерфейса на языке IDL (Interface Definition Language). Это обеспечивает высокую производительность и строгую типизацию, но требует, чтобы все интерфейсы были известны на этапе разработки.

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

Применение

DIIOP применялся в основном в крупных корпоративных информационных системах, где требовалась интеграция разнородных приложений, написанных на разных языках программирования (например, C++, Java, Ada). Он использовался в телекоммуникационных системах, банковских приложениях, системах управления производством и авиационных диспетчерских системах.

Одним из наиболее известных примеров использования DIIOP была платформа Java 2 Platform, Enterprise Edition (J2EE), где CORBA (включая DIIOP) служила основой для взаимодействия между компонентами EJB (Enterprise JavaBeans) и внешними системами. Также DIIOP применялся в продуктах компании Oracle (например, Oracle Application Server) и IBM (WebSphere Application Server) для обеспечения совместимости с унаследованными системами.

В России CORBA и DIIOP использовались в ряде государственных и корпоративных проектов, в частности, в системах автоматизации банковской деятельности и управления государственными информационными ресурсами. Однако с развитием веб-сервисов и REST-архитектуры популярность CORBA и DIIOP значительно снизилась.

Критика и упадок

Несмотря на свою гибкость, DIIOP имел ряд недостатков:

К началу 2010-х годов большинство крупных вендоров (Oracle, IBM, Borland) прекратили активную поддержку CORBA в своих продуктах. В 2017 году OMG официально объявила о завершении разработки новых версий спецификации CORBA. Сегодня DIIOP практически не используется в новых проектах, хотя может встречаться в унаследованных (легаси) системах, особенно в авиационной и оборонной промышленности.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →