CORBA 和 RMI 的区别
Posted
技术标签:
【中文标题】CORBA 和 RMI 的区别【英文标题】:Differen between CORBA and RMI 【发布时间】:2013-03-04 16:21:05 【问题描述】:除了in
、out
、inout
存在的问题,我很清楚CORBA和RMI的区别。
CORBA 使用 IDL 语言描述接口,定义的方法中的参数有关键字:in
、out
、inout
。它们的含义如下:
in
:参数从操作的调用者传递给对象。
out
:参数从对象传递给调用者。
inout
:参数双向传递。
我的问题:为什么关键字(in
、out
和 inout
)在 CORBA 中是必需的,而在 JAVA/RMI 中却不是必需的。
【问题讨论】:
RMI中只有参数。 Java中只有in
参数。
【参考方案1】:
这只是一个设计决定。它们设计的主要区别在于 CORBA 被设计为独立于平台和编程语言,而 RMI 是专门为 Java 编程语言设计的。
许多编程语言都有自己的方式来表达in
、out
或inout
参数方向,在这些语言中,CORBA IDL 有其直接的等价物。在其他语言(例如 Java)中,这些构造必须使用复杂的包装结构来实现。
Java 编程语言没有out
或inout
参数(虽然可以通过创建简单的值包装类来实现),所有参数都通过值(对于值类型)或引用传递in
(对于参考类型)。而且由于 Java 本身不支持语言级别的参数方向,因此在 RMI 中也没有必要这样做。
【讨论】:
【参考方案2】:但在 JAVA/RMI 中不是必需的。
它们在 Java 中不可用,更不用说 Java RMI。设计师决定通过价值传递一切。
【讨论】:
这些关键字在 IDL 中不是可选的。如果您在 IDL 接口中编写具有参数的函数,则必须指定 in、out 或 inout。以上是关于CORBA 和 RMI 的区别的主要内容,如果未能解决你的问题,请参考以下文章