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

Компонентная модель CORBA

Компонентная модель CORBA (CORBA Component Model, CCM) — это спецификация, определяющая стандартную серверную компонентную архитектуру для создания, развёртывания и управления распределёнными приложениями в среде CORBA (Common Object Request Broker Architecture). CCM расширяет базовую объектную модель CORBA, добавляя поддержку компонентов с управляемым жизненным циклом, контейнерами, портами (фасадами, приёмниками, источниками событий) и возможностью сборки приложений из готовых блоков. Модель была разработана консорциумом Object Management Group (OMG) и стандартизирована в начале 2000-х годов как альтернатива более сложным и менее гибким подходам, таким как Enterprise JavaBeans (EJB) в мире Java.

История

Разработка CCM началась в конце 1990-х годов, когда OMG осознала необходимость стандартизации компонентного подхода для CORBA. До этого CORBA предлагала только объектную модель, где каждый серверный объект реализовывался как отдельный CORBA-сервер, что приводило к дублированию кода и сложностям в управлении. Первая версия спецификации CCM была принята в 1999 году (CORBA 3.0), а окончательная версия — в 2002 году (CORBA 3.0.1). Модель была задумана как «лёгкая» альтернатива EJB, но с сохранением всех преимуществ CORBA: независимость от языка программирования, платформы и операционной системы.

На практике CCM не получила широкого распространения в коммерческих проектах из-за сложности реализации, конкуренции со стороны веб-сервисов (SOAP, REST) и Java EE. Однако она использовалась в некоторых нишевых областях, таких как телекоммуникационное оборудование (например, в системах управления сетями) и военные системы. В России CCM применялась в проектах, связанных с автоматизацией промышленных процессов и созданием распределённых информационных систем для государственных нужд.

Архитектура и основные понятия

CCM базируется на концепции компонента — автономного модуля, который реализует определённую бизнес-логику и взаимодействует с внешним миром через строго определённые интерфейсы. Компоненты CCM не являются самостоятельными процессами; они выполняются внутри контейнера — среды, предоставляющей системные сервисы (жизненный цикл, безопасность, транзакции, персистентность). Контейнер, в свою очередь, работает внутри сервера приложений CORBA.

Типы компонентов

CCM определяет три основных типа компонентов, различающихся по способу управления состоянием:

  • Сессионные (Session) — существуют только в течение сеанса работы клиента. Не сохраняют состояние между вызовами. Бывают без состояния (stateless) и с состоянием (stateful). Пример: компонент, обрабатывающий запросы на авторизацию.
  • Сущностные (Entity) — имеют постоянное состояние, хранящееся в базе данных. Могут быть разделяемыми между несколькими клиентами. Пример: компонент, представляющий запись о клиенте.
  • Управляемые сообщениями (Message-Driven) — асинхронные компоненты, реагирующие на сообщения из очередей или тем. Не имеют прямого клиентского интерфейса. Пример: компонент, обрабатывающий заказы, поступающие через JMS.

Портовая модель

Взаимодействие компонента с внешним миром осуществляется через порты — точки соединения, которые могут быть трёх типов:

  • Фасады (Facets) — интерфейсы, предоставляемые компонентом для вызова клиентами. Аналог IDL-интерфейсов в CORBA.
  • Приёмники (Receptacles) — точки подключения к другим компонентам. Позволяют компоненту вызывать методы других компонентов, не зная их точного расположения.
  • Источники событий (Event Sources) — порты, генерирующие события, на которые могут подписываться другие компоненты. Обеспечивают асинхронное взаимодействие по модели «публикация-подписка».

Развёртывание и конфигурация

CCM включает спецификацию Deployment and Configuration (D&C), которая описывает, как компоненты собираются в приложения, как они развёртываются на серверах и как конфигурируются. Для этого используется XML-описание (CCM Deployment Descriptor), содержащее информацию о зависимостях, параметрах инициализации, требованиях к ресурсам. Развёртывание может быть как статическим (заранее определённым), так и динамическим (с использованием службы управления).

Сравнение с другими компонентными моделями

CCM часто сравнивают с Enterprise JavaBeans (EJB) и COM+ (Component Object Model Plus). Основные отличия:

  • Языковая независимость: CCM поддерживает любой язык, для которого существует CORBA-привязка (C++, Java, Python, Ada, COBOL и др.), тогда как EJB привязан к Java, а COM+ — к языкам, поддерживающим COM (C++, C#, Visual Basic).
  • Стандартизация: CCM — открытый стандарт OMG, не зависящий от одного поставщика. EJB — стандарт Java Community Process (JCP), но его реализация зависит от конкретного сервера приложений (например, JBoss, WebLogic).
  • Масштабируемость: CCM изначально проектировалась для высоконагруженных распределённых систем, где требуется строгая типизация и поддержка транзакций. COM+ больше ориентирован на одноплатформенные решения Windows.
  • Сложность: CCM считается более сложной в изучении и реализации, чем EJB, из-за большего числа концепций (порты, контейнеры, развёртывание). Однако для опытных разработчиков CORBA она предоставляет более гибкие возможности.

Применение

CCM нашла применение в следующих областях:

  • Телекоммуникации: системы управления сетями (TMN, OSS/BSS), где требуется высокая надёжность и поддержка большого числа параллельных сессий.
  • Военные и авиакосмические системы: распределённые системы управления, моделирования и симуляции (например, в стандарте HLA — High-Level Architecture).
  • Промышленная автоматизация: системы управления производственными процессами (SCADA), где важна интеграция разнородного оборудования.
  • Финансовый сектор: системы обработки транзакций, где требуется строгая согласованность данных и поддержка распределённых транзакций (XA).

В России CCM использовалась в проектах, связанных с созданием автоматизированных систем управления для предприятий оборонно-промышленного комплекса, а также в разработке программного обеспечения для ГЛОНАСС.

Критика и ограничения

Несмотря на техническую проработанность, CCM имеет ряд недостатков, которые помешали её широкому распространению:

  • Сложность реализации: создание полноценного CCM-контейнера требует значительных усилий. Большинство коммерческих реализаций (например, OpenORB, Mico) были экспериментальными или неполными.
  • Низкая производительность: из-за дополнительных слоёв абстракции (контейнер, порты, управление событиями) CCM-приложения работают медленнее, чем нативные CORBA-объекты.
  • Отсутствие поддержки со стороны крупных вендоров: Oracle, IBM и Microsoft не включили CCM в свои продукты, предпочтя Java EE и .NET. Это привело к отсутствию коммерческих серверов приложений, поддерживающих CCM.
  • Конкуренция с веб-сервисами: появление SOAP и REST в 2000-х годах сделало CCM менее привлекательной для новых проектов, так как веб-сервисы были проще в использовании и не требовали установки CORBA-инфраструктуры.
  • Сложность миграции: переход с объектной модели CORBA на CCM требует переписывания существующего кода, что не всегда оправдано.

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

  • CCM была одной из первых попыток создать платформонезависимую компонентную модель, предшествовавшую таким стандартам, как SCA (Service Component Architecture) и OSGi.
  • В спецификации CCM предусмотрена поддержка асинхронных вызовов через механизм событий, что делает её подходящей для систем реального времени.
  • Несмотря на низкую популярность, CCM до сих пор используется в некоторых legacy-системах, особенно в оборонной и аэрокосмической промышленности США и Европы.
  • В России существовала собственная реализация CCM — проект CORBA++ (разработчик — компания «Инфосистемы Джет»), которая использовалась в системах управления для РЖД и «Газпрома».

Источники

  • Object Management Group. «CORBA Component Model Specification, Version 3.0.1» (2002).
  • Henning, M., Vinoski, S. «Advanced CORBA Programming with C++» (1999).
  • OMG. «Deployment and Configuration of Component-based Distributed Applications Specification» (2006).
  • Документация по проекту OpenORB (SourceForge).
  • Статья «CORBA Component Model: A Review» в журнале «IEEE Distributed Systems Online» (2003).

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

На главную BFOmetr →