Java RMI 和 RPC 有啥区别?

     2023-03-27     183

关键词:

【中文标题】Java RMI 和 RPC 有啥区别?【英文标题】:What is the difference between Java RMI and RPC?Java RMI 和 RPC 有什么区别? 【发布时间】:2021-10-12 21:58:37 【问题描述】:

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

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

【问题讨论】:

我认为 Java 中的 RMI 类似于 .Net 中的 gRPC... 【参考方案1】:

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

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

当需要开发比纯客户端-服务器架构更复杂的东西时,RMI 会脱颖而出。在网络上分散对象非常容易,使所有客户端都可以进行通信,而无需显式建立单独的连接。

【讨论】:

这是不正确的。 RPC 也是基于 Java 的。 JAX-RPC 1.1 被 2.0 取代,然后更名为 JAX-WS。在 Java 中,当您谈论 RPC 时,您是在谈论 SOAP 和 Web 服务。这是一篇关于 JAX-RPC 1.1 更改为 JAX-WS 的 IBM 文章。 ibm.com/developerworks/library/ws-tip-jaxwsrpc @MattC 我认为您链接到的文章指出,这个名称从“JAX-RPC”更改为“JAX-WS”的原因正是原来的名称不准确,因为这个规范不仅仅涉及传统意义上的“RPC”。所以这个关于 RPC 传统含义的答案仍然是正确的。 是的,我的意思是 RPC 起源于 C/Unix 世界(至少是最常见的 RPC 实现,ONCRPC),因此它是根据该计算模型建模的;当然,没有什么能阻止在任何其他编程语言之上实现它 对语义使用方式的意见略有不同不会导致答案错误(或误导)。读过这篇文章的人都可以很容易地理解,“C based”基本上意味着“面向过程”——任何学习过 Java 的人都知道 POP 与 OOP 的区别。 @xji JAX-RPC 是基于 Java 的。最初的 Sun RPC 是基于 C 的,但这个想法可以用多种语言实现,包括 Java。【参考方案2】:

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

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

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

【讨论】:

【参考方案3】:

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(简单对象访问协议)

【讨论】:

在我的应用程序中,我使用 JAX-WS 来公开/使用肥皂服务。我可以称之为 RPC 类型机制吗?据我了解,在 JAX-WS 中,我们使用 java 反射 API 调用远程方法。所以它与RPC的定义相匹配。请确认!【参考方案4】:

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

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

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

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

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

    RMI 比 RPC 慢一点

看看这个article 在 C 中的 RPC 实现

【讨论】:

【参考方案5】:

RMI 或远程方法调用是 非常类似于 RPC 或 Remote 客户端调用过程中 都将代理对象(或存根)发送到 服务器然而微妙 区别在于客户端 RPC 通过代理调用FUNCTIONS 函数和 RMI 调用 METHODS 通过代理功能。 RMI 是 被认为略胜一筹 面向对象的版本的 RPC。

来自here。

如需更多信息和示例,请联系look here。

【讨论】:

method是java中调用的函数,function是c/c++中调用的方法。那么还有什么区别呢? 不同之处在于(在实例方法的情况下),有一个调用对象。调用对象要么需要发送(连同其代码),要么需要存在于删除服务器上,但有一种方法可以在本地服务器上引用。 忽略特定的编程语言如何处理方法与函数,文学上的意思是函数返回一个值,而方法修改状态。 RPC 通过代理函数调用 FUNCTIONS,RMI 使用代理 OBJECT 调用 METHODS。对吗? 客户端通常不会“向服务器发送代理对象(或存根)”。引用质量差。【参考方案6】:

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

【讨论】:

【参考方案7】:

RMI和RPC的区别在于:

RMI 顾名思义就是远程方法调用:它调用一个方法或一个对象。并且 RPC 它调用一个函数。

【讨论】:

methodfunction 之间,您隐含地强调但没有澄清的区别是什么?在 Java 中没有函数……但据我所知,在 OOP 中,它们是同义词,invocationcall 也是同义词。 RPC 调用一个过程/函数 - 彻底结束。【参考方案8】:

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

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

【讨论】:

具体来说,哪个协议是“RPC”?据我所知,RPC 有两打协议,其中一半可用于 Java。 @foo 毫无疑问,他指的是 Sun-RPC,但所有 RPC 都指远程过程调用,没有对象或方法,因此它并不真正相关。

RPC 和浏览器/服务器有啥区别?

】RPC和浏览器/服务器有啥区别?【英文标题】:What\'sthedifferencebetweenRPCandBrowser/Server?RPC和浏览器/服务器有什么区别?【发布时间】:2011-09-0903:34:40【问题描述】:Browser/Server好像和RPC一样,就是Browser向Server发送请求,服务端调... 查看详情

Odoo 中的 Odoo RPC、Xml RPC、JSON RPC 和 REST API 有啥区别?

】Odoo中的OdooRPC、XmlRPC、JSONRPC和RESTAPI有啥区别?【英文标题】:WhatisthedifferencebetweenOdooRPC,XmlRPC,JSONRPCandRESTAPIinOdoo?Odoo中的OdooRPC、XmlRPC、JSONRPC和RESTAPI有什么区别?【发布时间】:2021-03-0213:02:44【问题描述】:我对OdooRPC、XMLRPC、J... 查看详情

XML-RPC 和 SOAP 有啥区别?

】XML-RPC和SOAP有啥区别?【英文标题】:What\'sthedifferencebetweenXML-RPCandSOAP?XML-RPC和SOAP有什么区别?【发布时间】:2010-09-0922:56:19【问题描述】:我从来没有真正理解为什么Web服务实现者会选择其中一个。XML-RPC通常出现在旧系统中... 查看详情

从底层的角度来看,Windows 中的命名管道和远程过程调用 (RPC) 有啥区别?

...底层的角度来看,Windows中的命名管道和远程过程调用(RPC)有啥区别?【英文标题】:Fromalow-levelperspective,whatisthedifferencebetweennamedpipesandremoteprocedurecalls(RPC)inWindows?从底层的角度来看,Windows中的命名管道和远程过程调用(RPC)有什么... 查看详情

rpc框架:thrift和protobuf有啥区别?

都是数据交换,整合多种语言,应用的解决方案。性能都差不多.相比较而言,thrift稍微强些.支持的数据格式也多些.支持的开发语言也比protobuf多些.目前只用过thrift.protobuf倒没有尝试...都差不多.参考技术Afastrpcprotobuf的一个全部开源... 查看详情

网络服务与 RMI/RPC

...02-0516:56:28【问题描述】:有谁知道webservice和RPC/RMI之间的区别?【问题讨论】:您是否尝试通过阅读它们来找出答案?如果你做功课,你也会知道的。好吧,我读到了它们。对我来说,它们看起来都一样:(【参考方案1】:“webser... 查看详情

远程通信的几种选择(rpc,webservice,rmi,jms的区别)

RPC(RemoteProcedureCallProtocol)RPC使用C/S方式,采用http协议,发送请求到服务器,等待服务器返回结果。这个请求包括一个参数集和一个文本集,通常形成“classname.methodname”形式。优点是跨语言跨平台,C端、S端有更大的独立... 查看详情

rpcrmi和rest的概念

...解RPC框架原理的新手来说是很宝贵的学习资料。RPC和RMI的区别1.RPC更像是一种协议,可以跨语言实现;而RMI仅支持Java,需要双方都运行在JVM中。2.RPC通过传入class和methodName的形式利用反射和代理类调用该方法;RMI需要依赖方法签... 查看详情

rpc和socket,rmi和rpc之间的关系

远程通信机制RPC与RMI的关系http://blog.csdn.net/zolalad/article/details/25161133   1.RPC    RPC(RemoteProcedureCallProtocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技... 查看详情

JSON RPC 与 HTTP2 与 grpc 有啥区别?

】JSONRPC与HTTP2与grpc有啥区别?【英文标题】:WhatthedifferencebetweenJSONRPCwithHTTP2vsgrpc?JSONRPC与HTTP2与grpc有什么区别?【发布时间】:2020-03-0503:21:30【问题描述】:我不喜欢同时做很多事情的工具。所以GRPC在我看来是开销,它就像kube... 查看详情

java中几种常用的rpc框架介绍

...辑关系图,以RMI为例:  其他的框架结构也类似,区别在于对象的序列化方法,传输对象的通讯协议,以及 查看详情

java中几种常用的rpc框架介绍

...有一个逻辑关系图,以RMI为例:其他的框架结构也类似,区别在于对象的序列化方法,传输对象的通讯协议,以及注册中心的管 查看详情

java中几种常用的rpc框架介绍

...有一个逻辑关系图,以RMI为例:其他的框架结构也类似,区别在于对象的序列化方法,传输对象的通讯协议,以及注册中心的管理与fail 查看详情

JavaScript 和 Java 有啥区别?

】JavaScript和Java有啥区别?【英文标题】:What\'sthedifferencebetweenJavaScriptandJava?JavaScript和Java有什么区别?【发布时间】:2010-09-1916:37:04【问题描述】:JavaScript和Java有什么区别?【问题讨论】:【参考方案1】:Java和Javascript很相似... 查看详情

JavaScript 和 Java 有啥区别?

】JavaScript和Java有啥区别?【英文标题】:What\'sthedifferencebetweenJavaScriptandJava?JavaScript和Java有什么区别?【发布时间】:2010-09-1916:37:04【问题描述】:JavaScript和Java有什么区别?【问题讨论】:【参考方案1】:JavaistoJavaScriptashamist... 查看详情

分布式系列五:rmi通信(代码片段)

...用该协议实现.RMI(RemoteMethodInvocation)远程方法调用RMI使用Java远程消息交换协议JRMP(JavaRem 查看详情

KotlinNullPointerException 和 Java 的 NullPointerException 有啥区别

】KotlinNullPointerException和Java的NullPointerException有啥区别【英文标题】:What\'sthedifferencebetweenKotlinNullPointerExceptionandJava\'sNullPointerExceptionKotlinNullPointerException和Java的NullPointerException有什么区别【发布时间】:2020-02-0 查看详情

大名鼎鼎的rpc和mq到底有啥区别和联系

RPC(RemoteProcedureCall)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。RPC框架知名度较高的有Thrift(FB的)、dubbo(阿里的)。 RPC的一般需要经历4个步骤:1、建立通信首先要解决通讯的问题:即A机器... 查看详情