【发布时间】:2021-10-12 21:58:37
【问题描述】:
Java RMI 和 RPC 之间的实际区别是什么?
我在某些地方读到 RMI 使用对象?
【问题讨论】:
-
我认为 Java 中的
RMI类似于 .Net 中的gRPC...
Java RMI 和 RPC 之间的实际区别是什么?
我在某些地方读到 RMI 使用对象?
【问题讨论】:
RMI 类似于 .Net 中的 gRPC...
RPC 是基于 C 的,因此它具有结构化的编程语义,另一方面,RMI 是一种基于 Java 的技术,它是面向对象的。
使用 RPC,您可以调用导出到服务器的远程函数,在 RMI 中,您可以引用远程对象并调用它们的方法,还可以传递和返回更多可以分布在许多 JVM 实例之间的远程对象引用,所以它是更强大。
当需要开发比纯客户端-服务器架构更复杂的东西时,RMI 会脱颖而出。在网络上分散对象非常容易,使所有客户端都可以进行通信,而无需显式建立单独的连接。
【讨论】:
RPC 和RMI 的主要区别在于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(简单对象访问协议)
【讨论】:
远程过程调用 (RPC) 是一种进程间通信,它允许调用驻留在本地或远程机器上的另一个进程中的函数。
远程方法调用 (RMI) 是一种 API,它在 Java 中实现 RPC,支持面向对象的范例。
您可以认为调用 RPC 就像调用 C 过程一样。 RPC 支持原始数据类型,而 RMI 支持方法参数/返回类型作为 java 对象。
与 RPC 不同,RMI 易于编程。您可以根据对象而不是一系列原始数据类型来考虑您的业务逻辑。
与 RMI 不同,RPC 是语言中立的,RMI 仅限于 java
RMI 比 RPC 慢一点
看看这个article 在 C 中的 RPC 实现
【讨论】:
【讨论】:
RPC 和 RMI 之间唯一真正的区别在于 RMI 中涉及到对象:我们不是通过代理函数调用函数,而是通过代理调用方法。
【讨论】:
RMI和RPC的区别在于:
【讨论】:
method 和function 之间,您隐含地强调但没有澄清的区别是什么?在 Java 中没有函数……但据我所知,在 OOP 中,它们是同义词,invocation 和 call 也是同义词。
RPC 是基于 C 的旧协议。它可以调用远程过程并使其看起来像本地调用。RPC 处理将远程调用传递给服务器并获取结果的复杂性给客户。
Java RMI 也实现了相同的功能,但略有不同。它使用对远程对象的引用。所以,它的作用是发送对远程对象的引用以及要调用的方法的名称。这会更好,因为它在大型程序的情况下会产生更清晰的代码,并且通过网络分发对象使多个客户端可以调用服务器中的方法,而不是建立每个连接单独。
【讨论】: