Описание тега corba
CORBA - это стандарт промежуточного программного обеспечения, который делает объекты на стороне сервера доступными для удаленных клиентов. Сервер (на котором находится объект) экспортирует реализующий экземпляр. Клиент получает заглушку, которая реализует тот же интерфейс, что позволяет им вызывать удаленные методы. CORBA также поддерживает удаленную обработку исключений.
Сообщения CORBA используют протокол General Inter ORB (GIOP) в качестве двоичного протокола для передачи данных между клиентом и сервером.
Версия 1.0 была выпущена в октябре 1991 года, последняя версия - 3.3, выпущенная в ноябре 2012 года. CORBA использует язык определения интерфейса ( IDL) для определения интерфейсов, которые объекты представляют внешнему миру. Затем CORBA указывает отображение IDL на конкретный язык реализации, такой как C++ или Java. Стандартные сопоставления существуют для Ada, C, C++, C++11, Lisp, Ruby, Smalltalk, Java, COBOL, PL / I и Python.. Существуют также нестандартные сопоставления для Perl, Visual Basic, Erlang и Tcl, реализованные брокерами объектных запросов (ORB), написанными для этих языков.
CORBA полезна тем, что позволяет отдельным программам, написанным на разных языках и работающим на разных компьютерах, работать друг с другом как с одним приложением или набором служб.
Спецификация CORBA требует наличия ORB, через который приложение будет взаимодействовать с другими объектами. На практике приложение просто инициализирует ORB и обращается к внутреннему адаптеру объекта, который поддерживает такие вещи, как подсчет ссылок, политики создания экземпляров объектов (и ссылок) и политики времени жизни объектов. Адаптер объектов используется для регистрации экземпляров сгенерированных классов кода. Сгенерированные классы кода являются результатом компиляции кода IDL пользователя, который переводит определение интерфейса высокого уровня в базу классов, зависящую от ОС и языка, для использования в пользовательском приложении. Этот шаг необходим для обеспечения семантики CORBA и обеспечения чистого пользовательского процесса для взаимодействия с инфраструктурой CORBA.
Некоторые сопоставления языков IDL использовать сложнее, чем другие. Например, из-за природы Java отображение IDL-Java довольно прямолинейно и делает использование CORBA очень простым в приложении Java. Это также верно для отображения IDL в Python. Отображение C++ общеизвестно сложно; отображение требует, чтобы программист изучил сложные и запутанные типы данных, которые предшествовали стандартной библиотеке шаблонов C++ (STL). Отображение C++11 широко использует стандартную библиотеку шаблонов C++ (STL) и простое в использовании. Поскольку язык C не является объектно-ориентированным, отображение IDL в C требует, чтобы программист на C вручную имитировал объектно-ориентированные функции.
Отображение языков требует, чтобы разработчик определил свои интерфейсы и систему типов с помощью IDL . Как правило, реализация CORBA поставляется с инструментом, называемым компилятором IDL, который преобразует IDL пользователя в сгенерированный код для определенного языка. Затем традиционный компилятор компилирует сгенерированный код для создания файлов связываемых объектов для приложения.
Поскольку (в отличие, например, от XML) сообщения GIOP не читаются пользователем, компилятор IDL отвечает за создание всего кода, который записывает и считывает структуры данных во время удаленной операции.