Должно ли приложение CORBA быть реализовано на том же языке, что и ORB? - PullRequest
1 голос
/ 25 января 2012

Мне известно, что CORBA позволяет реализовать несколько объектов на разных языках программирования и даже работать на разных вычислительных узлах. Однако требуется ли для этого два разных ORB, написанных на двух разных языках?

Пример: узел A запускает приложение Java J1, а узел B - приложение C ++ C1. Должен ли я получить «Java ORB» для узла A и «C ++ ORB» для узла B, или все / некоторые ORB могут взаимодействовать с приложениями, написанными на любом языке, для которого существует сопоставление IDL?

Я был бы особенно благодарен, если бы кто-нибудь мог связать меня с источником, прямо указавшим это, как я хотел бы привести. Самое близкое, что я нашел, это "способ, которым программист манипулирует структурой или объединением, делает удаленный вызов с использованием прокси или реализует интерфейс с классом слуги, одинаково во всех продуктах C ++ CORBA, точно так же во всех все продукты Java CORBA и т. д. ". Это заставляет меня думать, что мне понадобятся два ORB, но недостаточно четко. Я хотел бы знать, могу ли я заявить, что «поскольку ORB написан на C ++, прикладные программисты также вынуждены использовать C ++».

Спасибо

Ответы [ 3 ]

3 голосов
/ 25 января 2012

Нет. Дело в том, что CORBA полностью отделяет компоненты.

Очевидно, что ваши приложения должны использовать клиентские библиотеки, с которыми они могут взаимодействовать. Ваш ORB может предоставлять привязки только для одного языка, и в этом случае вам нужно найти другие привязки или найти способ взаимодействия с ними (например, если вы используете Python, вы все равно можете работать с библиотеками C ++, если хотите).

Попробуйте на самом деле использовать технологию.

2 голосов
/ 25 января 2012

Не важно, на каком языке реализован ORB, важно, какие языковые привязки он предоставляет.Для языка L вам нужен orb, который обеспечивает привязки для языка L. Часто orbs просто предоставляют привязку для языка, на котором написаны сами, но они также могут предоставлять привязки для некоторых других языков.

0 голосов
/ 25 января 2012

Существует несколько подходов, которые можно использовать при реализации приложений CORBA, но, суммируя их, да, инфраструктура ORB должна быть на том же языке, что и реализация вашего приложения.

Как в Java, так и в C ++компилятор IDL создает заглушки и скелеты , которые служат связующим звеном между сетью и вашей программой.Вы предоставляете реализацию своих объектов CORBA, обычно наследуя от сгенерированного классом компилятора IDL (скелет).Скелет каким-то образом получает запрос от клиента , а затем вызывает вашу реализацию.То же самое происходит в обратном направлении на стороне клиента.

Затем и скелет, и заглушка используют механизмы, предоставляемые ORB, для удаленного вызова серверов и для ответа на ответы, даже включая стабилизацию сетевых подключений, если клиент исерверы находятся на разных машинах.Эта «магия» реализуется ORB и должна присутствовать в вашей программе в виде библиотеки, набора функций и т. Д., Которые заглушка и скелет будут использовать для выполнения работы.

Итаккаждая программа должна иметь какое-то представление ORB для взаимодействия с другими клиентами и серверами CORBA на других машинах.

Однако, с логической точки зрения, ORB рассматривается как слой, который на самом делеи беспрепятственно соединяет как клиентов, так и серверы, поэтому, даже когда приложение C ++ имеет некоторую реализацию ORB, написанную на C ++, а реализация Java имеет ORB, написанную на Java, благодаря магии стандартных протоколов (GIOP, IIOP), ониобщаются без проблем.

...