JavaRMI 和 RPC 之间的实际区别是什么?
我在一些地方读到 RMI 使用对象?
RMI 或远程方法调用是 非常类似于 RPC 或远程 过程调用中的客户端 将代理对象(或存根)发送到 服务器然而微妙 区别在于客户端 RPC 通过代理调用 职能 函数和 RMI 调用 方法 通过代理函数 被认为是稍微优越的 一个面向对象的 RPC 版本
来自 给你。
有关更多信息和示例,请使用 看这里。
RPC 是基于 C 的,因此它具有结构化编程语义,另一方面,RMI 是一种基于 Java 的技术,它是面向对象的。
使用 RPC,你可以调用导出到服务器的远程函数,在 RMI 中,你可以拥有对远程对象的引用并调用它们的方法,还可以传递和返回更多的远程对象引用,这些引用可以分布在许多 JVM 实例中,所以它的功能更加强大。
当需要开发比纯客户机-服务器体系结构更复杂的东西时,RMI 就显得尤为突出。在网络上分散对象使所有客户端能够进行通信,而不必显式地建立单独的连接,这是非常容易的。
RPC 和 RMI 之间的主要区别是 RMI 涉及到 < em > object 。我们不使用代理 功能远程调用过程,而是使用代理 对象。
RMI 具有更大的透明度,即在技术集成到语言中时,对对象、引用、继承、多态性和异常的利用。
RMI 也比 RPC 更高级,它支持 动态调用(接口可以在运行时更改)和 物体适应性(提供额外的抽象层)。
RPC 和 RMI 之间唯一真正的区别在于 RMI 中涉及到对象: 我们不是通过代理函数调用函数,而是通过代理调用方法。
RMI 和 RPC 的区别在于:
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 (简单对象访问协议)
远程过程调用(Remote Process Call,RPC) 是一种进程间通信,它允许调用驻留在本地或远程计算机中的另一个进程中的函数。
远程方法调用(RMI) 是一个 API,它在 Java 中实现 RPC,并支持面向对象的范例。
您可以认为调用 RPC 就像调用 C 过程一样。RPC 支持原始数据类型,其中 RMI 支持作为 java 对象的方法参数/返回类型。
与 RPC 不同,RMI 很容易编程。您可以根据对象而不是基本数据类型序列来考虑业务逻辑。
RPC 是语言中立的,而 RMI 仅限于 java
RMI 比 RPC 慢一点
看一下用 C 实现 RPC 的 文章
RPC 是一个基于 C 的旧协议。它可以调用远程过程,并使其看起来像一个本地调用。 RPC 处理将远程调用传递给服务器并将结果传递给客户端的复杂性。
Java RMI 也实现了同样的功能,只是稍有不同。它使用了对 远程对象的引用。所以,它所做的就是发送一个对远程对象的引用,以及要调用的方法的名称。这样做更好,因为它在大型程序的情况下产生了更清晰的代码,而且对象在网络中的分布使得多个客户端能够在服务器中调用方法,而不是单独建立每个连接。