Java RMI和RPC有什么区别?

时间:2010-04-28 10:10:29

标签: java rmi rpc

Java RMI和RPC之间的实际区别是什么?

我在某些地方读过RMI使用对象?

9 个答案:

答案 0 :(得分:129)

RPC是基于C的,因此它具有结构化编程语义,另一方面,RMI是基于Java的技术,它是面向对象的。

使用RPC,您可以只调用导出到服务器的远程函数,在RMI中,您可以引用远程对象并调用它们的方法,还可以传递和返回可以在许多JVM实例之间分布的更多远程对象引用,因此它是更强大。

当需要开发比纯客户端 - 服务器架构更复杂的东西时,RMI脱颖而出。通过网络分布对象非常容易,使所有客户端无需明确地建立单独的连接即可进行通信。

答案 1 :(得分:44)

RPC和RMI之间的主要区别在于 RMI涉及对象 。我们不是使用代理函数远程调用过程,而是使用代理对象

RMI具有更高的透明度,即由于技术被集成到语言中,因此利用对象,引用,继承,多态和异常。

RMI也比RPC更先进,允许动态调用,其中接口可以在运行时更改,对象适应,它提供了额外的抽象层。

答案 2 :(得分:17)

<强> 1。方法

RMI使用面向对象的范例,用户需要知道对象和他需要调用的对象的方法。

RPC不处理对象。相反,它调用已经建立的特定子例程。

<强> 2。工作

使用RPC,您将获得一个看起来非常像本地调用的过程调用。 RPC处理将调用从本地传递到远程计算机所涉及的复杂性。

RMI做了同样的事情,但是RMI传递了对象和被调用方法的引用。

RMI = RPC +面向对象

第3。更好的一个:

与RPC相比,RMI是一种更好的方法,特别是对于较大的程序,因为它提供了更清晰的代码,如果出现问题则更容易识别。

<强> 4。系统示例:

RPC系统: SUN RPC,DCE RPC

RMI系统: Java RMI,CORBA,Microsoft DCOM / COM +,SOAP(简单对象访问协议)

答案 3 :(得分:10)

远程过程调用(RPC) 是一种进程间通信,允许调用驻留在本地或远程计算机中的另一个进程中的函数。

远程方法调用(RMI) 是一种API,它在java中实现RPC,支持面向对象的范例。

  1. 您可以认为调用RPC就像调用C过程一样。 RPC支持原始数据类型,其中RMI支持方法参数/返回类型作为java对象。

  2. 与RPC不同,RMI很容易编程。您可以根据对象而不是一系列原始数据类型来考虑业务逻辑。

  3. 与RMI不同,RPC是语言中立的,RMI仅限于java

  4. RMI稍微慢一点

  5. 在C

    中查看这个article的RPC实现

答案 4 :(得分:7)

  

RMI或Remote Method Invokation是   与RPC或Remote非常相似   程序调用客户端   两者都发送代理对象(或存根)   然而,服务器是微妙的   不同的是客户端RPC   通过代理调用 FUNCTIONS   函数和RMI调用 METHODS   通过代理功能。 RMI是   被认为略微优越   面向对象的版本的RPC。

来自here

有关更多信息和示例,请look here

答案 5 :(得分:6)

RPC和RMI之间唯一真正的区别是RMI中涉及对象:我们不是通过代理函数调用函数,而是通过代理调用方法。

答案 6 :(得分:6)

RMI和RPC之间的区别在于:

  • RMI ,因为名称表示远程方法调用:它调用方法或对象。和
  • RPC 它会调用一个函数。

答案 7 :(得分:3)

RPC 是基于C的旧协议。它可以调用远程过程并使其看起来像本地调用.RPC处理将远程调用传递给服务器并获得结果的复杂性对客户。

Java RMI 也实现了同样的目标,但略有不同。它使用了对 远程对象 的引用。所以它的作用是它发送对远程对象的引用以及要调用的方法的名称。它更好,因为它在大型程序的情况下产生更清晰的代码,并且通过网络分发对象使得多个客户端能够调用服务器中的方法而不是建立每个连接单独。

答案 8 :(得分:1)

RMI或Remote Method Invokation与RPC或远程过程调用非常相似,因为客户端都将代理对象(或存根)发送到服务器,但是细微差别是客户端RPC通过代理函数调用FUNCTIONS并且RMI调用方法通过代理功能。 RMI被认为略胜一筹,因为它是面向对象的RPC版本。