RPC 和 RMI 有什么区别?

问题描述

目前正在阅读有关 RPC 和 RMI 的内容,我对它们的区别有些困惑。

在实现 RMI 和例如 gRPC 时,语法基本相同。

它们都有确定方法参数和响应的接口。

它们都可以在参数中发送对象(Java RMI 原生实现,C# gRPC 使用 proto)。

它们都通过对某个对象(基于接口)的方法调用来执行对服务器的请求。

那么有什么区别呢?客户端和服务器之间的数据传输过程是如何发生的?

从表面上看,RMI 只是 RPC 的 Java 实现,而 gRPC 是 C# 实现。

解决方法

RPC 代表支持过程编程的远程过程调用。 Tt 几乎就像 IPC 机制,只要软件允许进程管理共享信息,就与环境相关联,只要完全不同的进程在不同的系统上执行单元死刑,并且本质上需要基于消息的通信。 rpc

上图显示了PRC实施的工作步骤。

RMI代表远程方法调用,类似于PRC,但它支持面向对象编程,这是java的特性。线程可以决定对异物的策略。在 RMI 中,对象作为参数而不是普通数据传递。

rmi

此图显示了 RMI 协议的客户端-服务器架构。

RPCRMI 都很相似,但 RPCRMI 的基本区别在于 RPC支持过程式编程,另一方面,RMI支持面向对象编程

让我们看看RPCRMI之间的区别:

rmi vs rpc