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

CORBA

CORBA (Common Object Request Broker Architecture — общая архитектура брокеров объектных запросов) — это стандарт распределённых вычислений, определяющий инфраструктуру для взаимодействия программных объектов, написанных на разных языках программирования и работающих на различных операционных системах в гетерогенной сети. CORBA предоставляет средства для вызова удалённых методов (RPC) и обмена данными между объектами, скрывая детали их физического расположения и реализации.

История

Разработка CORBA началась в 1989 году в рамках консорциума Object Management Group (OMG), объединившего более 800 компаний, включая IBM, Sun Microsystems, Hewlett-Packard и Microsoft. Основной целью было создание открытого, независимого от платформы стандарта для построения распределённых приложений. Первая спецификация CORBA 1.0 была выпущена в 1991 году и включала определение интерфейсного языка IDL и базовой архитектуры брокера объектов. В 1995 году вышла версия 2.0, которая ввела протокол GIOP (General Inter-ORB Protocol) и его реализацию IIOP (Internet Inter-ORB Protocol), что позволило взаимодействие между разными реализациями CORBA через TCP/IP. Версия 3.0, принятая в 2002 году, добавила поддержку асинхронного обмена сообщениями, компонентную модель CORBA (CCM) и интеграцию с веб-службами. Наибольшую популярность CORBA приобрела в корпоративном секторе в 1990-х годах, но к середине 2000-х уступила позиции более простым технологиям, таким как веб-службы SOAP, REST и платформа Java EE, из-за сложности реализации, высокой стоимости внедрения и проблем с производительностью.

Архитектура

Архитектура CORBA основана на модели «брокера объектных запросов» (ORB — Object Request Broker), который выступает в роли посредника между клиентом и серверным объектом. Основные компоненты:

  • ORB (Object Request Broker) — центральный элемент, отвечающий за передачу запросов от клиента к объекту-реализации и возврат результатов. ORB обрабатывает активацию объектов, маршализацию данных, управление соединениями и поиск объектов.
  • IDL (Interface Definition Language) — декларативный язык для описания интерфейсов удалённых объектов. IDL определяет типы данных (структуры, массивы, перечисления) и сигнатуры методов независимо от языка программирования. С помощью компиляторов IDL генерируются заглушки (stubs) на стороне клиента и скелеты (skeletons) на стороне сервера.
  • GIOP (General Inter-ORB Protocol) — протокол более высокого уровня для обмена сообщениями между ORB. Определяет форматы запросов, ответов и уведомлений.
  • IIOP (Internet Inter-ORB Protocol) — реализация GIOP поверх TCP/IP. Является обязательным для всех совместимых реализаций CORBA.
  • Службы CORBA (CORBA Services) — набор стандартизированных сервисов для управления объектами: служба именования (Naming Service), жизненного цикла (Life Cycle Service), событий (Event Service), транзакций (Transaction Service), безопасности (Security Service) и другие.

Классификация и виды

Реализации CORBA можно разделить по двум основным категориям:

По типу ORB

  • Полнофункциональные ORB — предоставляют полную поддержку всех спецификаций CORBA, включая службы, асинхронные вызовы и компонентную модель. Примеры: VisiBroker (Borland/JD Edwards), Orbix (IONA Technologies), Java IDL (в составе Java SE).
  • Лёгкие ORB — реализуют базовую функциональность обмена сообщениями без полного набора служб. Использовались для встраиваемых систем и мобильных устройств. Примеры: TAO (The ACE ORB, для C++ и реального времени), JacORB (на Java).
  • Реализации реального времени — TAO и некоторые коммерческие ORB поддерживают временные ограничения (deadlines), детерминированность и приоритеты для промышленных и авиакосмических систем.

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

  • C++ ORB — наиболее распространённые, с низкой задержкой и высоким контролем памяти. Типичные представители: TAO, Orbix.
  • Java ORB — встроены в стандартную библиотеку Java SE (пакет org.omg.CORBA), упрощают разработку за счёт автоматического управления памятью. Примеры: Java IDL, JacORB.
  • Python ORB — например, omniORB (для Python и C++) или PyORB (чисто Python).
  • COBOL, Ada, Smalltalk — существовали реализации для исторически значимых промышленных систем.

Устройство и характеристики

Работа CORBA строится на модели удалённого вызова методов (RMI). Клиент вызывает метод объекта-заглушки (stub), которая передаёт запрос через ORB локального брокера. ORB использует протокол GIOP/IIOP для передачи сообщения на сторону сервера, где ORB сервера передаёт вызов скелету, а тот — реальному объекту-реализации. Результат возвращается обратным путём.

Ключевые характеристики:

  • Платформонезависимость — CORBA поддерживает большинство языков и операционных систем, существовавших в 1990-х и 2000-х.
  • Языконезависимость — клиент и сервер могут быть написаны на разных языках, если есть соответствующая реализация ORB и компилятор IDL.
  • Прозрачность расположения — клиент не знает, на каком хосте или процессе работает объект; поиск осуществляется через службу именования.
  • Динамический вызов — через DII (Dynamic Invocation Interface) и DSI (Dynamic Skeleton Interface) возможен вызов методов без предварительной генерации заглушек и скелетов, что ускоряло разработку прототипов.
  • Гарантированный порядок — IIOP использует TCP как надёжный протокол.
  • Производительность — значительно ниже, чем у прямых TCP/UDP-сервисов, из-за маршализации и дополнительных слоёв абстракции.

Применение

Основные области применения CORBA:

  • Корпоративные системы — интеграция разнородных приложений (ERP, CRM, биллинг) в гетерогенной сети. Широко использовалась в финансовом секторе, телекоммуникациях, здравоохранении.
  • Аэрокосмическая и оборонная промышленность — системы управления спутниками, авионика, военные командные пункты. Стандарт OMNET? (название уточняется) — ряд критических систем НАТО.
  • Промышленная автоматизация — системы диспетчерского управления и сбора данных (SCADA) с жёсткими временными ограничениями (через TAO).
  • Образовательные проекты — изучение распределённых объектов и архитектур.

К концу 2020-х годов CORBA практически полностью вытеснена веб-службами (SOAP, REST) и микросервисными архитектурами, но сохраняет применение в унаследованных (legacy) системах, особенно в оборонном и авиационном секторах, где замена требует больших затрат.

Примеры

  • Система бронирования авиабилетов Sabre (разработка 1990-х) использовала CORBA для интеграции back-end систем.
  • Программное обеспечение для телекоммуникаций Ericsson — часть OSS (Operations Support Systems) базировалась на CORBA.
  • Научные проекты CERN — за 2008-2014 годы некоторые компоненты Grid-вычислений использовали CORBA для взаимодействия сервисов.

Критика

Основные недостатки CORBA:

  • Сложность разработки — необходимость написания IDL-файлов, генерации заглушек/скелетов, настройки ORB, управления состоянием объектов. Время первичной настройки проекта могло составлять недели.
  • Качество документации — спецификации OMG были объёмными и зачастую неоднозначными, что приводило к различиям в реализации от разных вендоров.
  • Плохая производительность — из-за маршализации и дополнительных абстракций скорость меньше в 5-10 раз по сравнению с прямым TCP (на практике).
  • Отсутствие стандартного механизма передачи потоковых данных — CORBA не оптимизирована для видео- и аудиостриминга.
  • Вендорная зависимость — хотя стандарт был открытым, коммерческие реализации (VisiBroker, Orbix) сильно различались, привязывая потребителей к одному поставщику.
  • Вытеснение более простыми альтернативами — веб-службы SOAP и особенно REST предложили гораздо более низкий порог входа, а JSON заменил IDL как интерфейсный язык.

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

  • Название «брокер» в CORBA — метафора к финансовому посреднику, который организует сделку между клиентом и продавцом (объектом).
  • Спецификация CORBA включала «Службу событий» (Event Service), которая позволяла подписываться на уведомления — прообраз современных очередей сообщений (RabbitMQ, Apache Kafka).
  • В 2011 году IEEE назвал CORBA одной из 20 величайших технологий, изменивших мир, наряду с Ethernet и Java.
  • В 2019 году Microsoft официально прекратила поддержку CORBA в ОС Windows.

Источники

  • OMG. CORBA 3.0 Specification — Object Management Group, 2002.
  • Vinoski, S. «CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments» — IEEE Communications Magazine, 1997.
  • Henning, M., Vinoski, S. «Advanced CORBA Programming with C++» — Addison-Wesley, 1999.
  • Popovici, I. «CORBA vs. SOAP: A Performance Evaluation» — Journal of Systems and Software, 2007.
  • Вольф, Д. «Обзор распределённой системы CORBA» — Журнал «Открытые системы», 2004.

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

На главную BFOmetr →