【发布时间】:2012-01-25 13:12:18
【问题描述】:
我知道 CORBA 允许以不同的编程语言实现多个对象,甚至可以在不同的计算节点上运行。但是,这是否也需要用两种不同语言编写的两个不同 ORB?
示例:节点 A 运行 Java 应用程序 J1,而节点 B 运行 C++ 应用程序 C1。我是否必须为节点 A 获取一个“Java ORB”,为节点 B 获取一个“C++ ORB”,或者所有/部分 ORB 是否可以与以任何语言编写且存在 IDL 映射的应用程序交互?
如果有人可以将我链接到明确说明这一点的来源,我将特别感激,因为我想引用它。我找到的最接近的是 "the way a programmer manipulates a struct or union, makes a remote call using a proxy or implements an interface with a servant class is exactly the same across all C++ CORBA products, is exactly the same across all Java CORBA products, and so on" 。这让我觉得我需要两个 ORB,但不够明确。我基本上想知道我是否可以说“由于 ORB 是用 C++ 编写的,因此应用程序程序员也被限制使用 C++”。
谢谢
【问题讨论】:
-
让我试着用一个具体的例子来澄清一点:“ACE ORB (TAO) is a is a is a CORBA V3.0 compatible, C++ ORB”link 这是否意味着我有如果使用 TAO,用 C++ 编写我的应用程序?
-
是的,就是这个意思。但是,它可以通过标准协议 IIOP(以及其他)以任何其他编程语言与任何其他 ORB 进行远程通信。
-
谢谢大家的帮助!共识似乎是应用程序需要* ORB 以提供应用程序实现所用语言的 API。通常,ORB 只会以它本身实现的编程语言提供 API,但没有什么可以阻止的它将其核心库链接到其他语言的 API。 *此外,还可以利用应用程序语言的任何语言嵌入功能,例如,从 Python 调用 C++ 或从 Java 调用 C。