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 →