Java RMI和RPC有什么区别?

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

我在某些地方看过RMI使用Object?

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

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

当需要开发比纯粹的客户端 – 服务器架构更复杂的东西时,RMI脱颖而出。 通过networking传播对象非常简单,使所有的客户端都能够进行通信,而无需明确build立单独的连接。

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

RMI具有更高的透明度,也就是说,由于将技术集成到语言中,因此可以利用对象,引用,inheritance,多态性和exception。

RMI也比RPC更先进,允许在运行时接口可以改变的dynamic调用 ,以及提供附加抽象层的对象自适应

1.方法:

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

RPC不处理对象。 而是调用已经build立的特定的子程序。

2.工作:

使用RPC,你会得到一个类似于本地调用的过程调用。 RPC处理将呼叫从本地传递到远程计算机所涉及的复杂性。

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

RMI = RPC +面向对象

3.更好的一个:

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

4.系统示例:

RPC系统: SUN RPC,DCE RPC

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

RMI或远程方法调用与RPC或远程过程调用非常相似,因为客户端都向服务器发送代理对象(或存根),但细微的区别是客户端RPC通过代理函数调用FUNCTIONS ,RMI通过代理function。 RMI被认为是稍微优越的,因为它是一个面向对象的RPC版本。

从这里 。

有关更多信息和示例, 请看这里 。

RMI和RPC的区别在于:

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

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

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

  1. 你可以想到调用RPC就像调用一个C程序。 RPC支持原始数据types,RMI支持将方法参数/返回types作为java对象。

  2. 与RPC不同,RMI很容易编程。 您可以根据对象来思考业务逻辑,而不是一系列基本数据types。

  3. RPC不像RMI那样是语言中立的,它仅限于java

  4. RMI稍微慢一点RPC

在C中查看这篇文章的RPC实现

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

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

Java RMI也实现了相同的function,但是略有不同。它使用了对远程对象的引用。因此,它发送一个对远程对象的引用以及要调用的方法的名称。最好是因为它导致更清洁大程序情况下的代码以及通过networking分发对象使多个客户端能够调用服务器中的方法,而不是单独build立每个连接。

RMI或远程方法调用与RPC或远程过程调用非常相似,因为客户端都将代理对象(或存根)发送到服务器,但细微的区别在于客户端RPC通过代理函数调用FUNCTIONS,RMI通过代理function。 RMI被认为是稍微优越的,因为它是一个面向对象的RPC版本。