RMI和CORBA有什么区别?

10

我正在学习期末考试,有几个关于RMI和CORBA的问题。这些都是来自学习指南的讨论问题,因此没有实际应用背景。

  1. 为什么RMI和CORBA基于TCP?答案需涉及调用语义。

我目前想到的是,TCP比UDP更可靠,在RMI/CORBA中,我们需要网络可靠性。我还在某处读到过,TCP深度嵌入了本地Java网络类中。这个说法我不是很自信,因为CORBA可以在任何语言中实现。

  1. 讨论RMI和CORBA命名服务之间的区别。

我对这个问题有点困惑,因为我迄今所读到的是,RMI和CORBA是趋同的技术,RMI可以访问CORBA对象。就我目前的理解,名称服务似乎非常相似,任何差异都不值得注意。

  1. 为什么RMI需要显式动态调用,而CORBA不需要?

我还没有想出来。

我知道我在问三个不同的问题,但它们似乎都相关。

1个回答

6
基于TCP的RMI/CORBA:它们都是分布式对象调用机制,更容易在可靠传输协议上构建,这样您就不必担心数据丢失。如果使用UDP构建,则需要考虑很多其他机制,如重传和重复等。
RMI/CORBA名称服务:请深入了解。CORBA名称服务称为COS命名,而RMI名称服务称为JNDI。它们处于不同的架构级别。JNDI本质上是一组API,而COS命名既是API(通过IDL表示)又是一种线路协议定义。
动态调用。我不确定这个问题的意思。这两种技术本质上都允许您远程调用对象上的方法。
希望这有点帮助。

2
需要注意的是,RMI 也可以使用 CORBA 协议。 - Bozho
没错,确实是后来添加的(在它们都被引入时已经存在)。 - Francis Upton IV
3
CORBA不仅仅是一个通信协议。每个服务都在IDL中进行了规定,而IDL可以翻译成多种语言的API,包括Java。 - Stephen C
@Francis Upton CORBA现在具有对象按值传递的功能,部分是为了支持RMI/IIOP。 - user207421
RMI命名服务被称为RMI注册表。JNDI仅是它或其他几个接口的一个接口。 - user207421
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接