回答
RPC是基于C的,因此它具有结构化编程语义,另一方面,RMI是基于Java的技术并且是面向对象的。
使用RPC,您可以调用导出到服务器的远程函数,在RMI中可以引用远程对象并调用它们的方法,还可以传递并返回更多可以在多个JVM实例中分发的远程对象引用。它更强大。
当需要开发比纯粹的客户端 - 服务器架构更复杂的东西时,RMI脱颖而出。通过网络分散对象非常容易,使所有客户端都能够进行通信,而无需明确建立单独的连接。
RPC与RMI的主要区别在于RMI涉及到对象。代替使用代理函数远程调用过程,我们改为使用代理对象。
RMI具有更高的透明度,即由于技术集成到语言中,因此可以利用对象,引用,继承,多态性和异常。
RMI也比RPC更先进的,允许动态调用,其中接口可以在运行时改变,并且对象适配,它提供了一个抽象的附加层。
RPC和RMI之间唯一真正的区别在于RMI中包含对象:不是通过代理函数调用函数,而是通过代理调用方法。
RMI和RPC之间的差别在于:
- RMI顾名思义远程方法调用:它调用一个方法或对象。并且
- RPC它调用一个函数。
您在“方法”和“函数”之间隐含地强调了哪些差异,但没有澄清?在Java中没有函数......但在OOP中,据我所知,它们是同义词,“调用”和“调用”也是同义词。 – mins 2014-08-29 05:39:33
1.方法:
RMI使用其中用户需要知道对象,他需要调用该对象的方法中的面向对象的范例。
RPC不处理对象。而是调用已经建立的特定子程序。
2.工作:
随着RPC,你会得到一个过程调用,看起来很像一个本地电话。 RPC处理将呼叫从本地传递到远程计算机所涉及的复杂性。
RMI做了同样的事情,但RMI传递了对象的引用和被调用的方法。
RMI = RPC +对象取向
3.更好之一:
RMI是一个较好的方法相比RPC,尤其是对于较大的程序,因为它提供了一个清洁器代码如果出现问题,更容易识别。
4.系统示例:
RPC系统: SUN RPC,DCE RPC
RMI系统: 的Java RMI,CORBA,微软DCOM/COM +,SOAP(简单对象访问Protocol)
Remote Procedure Call(RPC)是一个进程间通信,它允许在驻留在本地或远程机器上的另一个进程中调用一个函数。
远程方法调用(RMI)是一个API,它实现在RPC用java支持面向对象的范式。
你能想到调用RPC的是像调用C程序。 RPC支持原始数据类型,其中RMI支持将方法参数/返回类型作为java对象。
与RPC不同,RMI很容易编程。您可以根据对象来思考业务逻辑,而不是一系列基本数据类型。
RPC是语言不像RMI,这是仅限于Java的中性
RMI是稍微慢一点的RPC
在C
RPC是基于C.It可以调用远程过程,使它看起来像本地call.RPC的旧协议处理是通过远程调用服务器和获取结果客户端的复杂性。
Java RMI的也达到了同样的事情,但略有differently.It用来远程对象。所以引用,它的作用是将其发送到远程对象的引用非常久远的方法的名称invoke.It更好,因为它在大型程序的情况下会产生更清晰的代码,并且通过网络分发对象还可以使多个客户端调用服务器中的方法,而不是单独建立每个连接。
- 1. Java RMI和JMS有什么区别?
- 2. Erlang的Ports和RPC有什么区别?
- 3. RPC和IPC有什么区别吗?
- 4. XML-RPC和SOAP有什么区别?
- 5. RMI和Corba有何区别?
- 6. `java -version`和`java -showversion`有什么区别?
- 7. java HttpsURLConnection和python HTTPSConnection有什么区别?
- 8. Java 8:Instant和LocalDateTime有什么区别?
- 9. Java中boolean和Boolean有什么区别?
- 10. Java中> =和=>有什么区别?
- 11. Java - LibGDX - isKeyPressed和isKeyJustPressed有什么区别?
- 12. !=和=!有什么区别!在Java中?
- 13. java 8 ZonedDateTime和OffsetDateTime有什么区别?
- 14. Java包:`oracle.AQ`和`oracle.jdbc.aq`有什么区别?
- 15. Eclipse for Java和RCP有什么区别?
- 16. Java EE和Asp.net有什么区别
- 17. PHP和Java有什么区别?
- 18. 继承和java豆有什么区别?
- 19. Golang的net/rpc包和gRPC框架有什么区别?
- 20. CORBA和RMI的区别
- 21. 有什么区别`和$(Bash中有什么区别?
- 22. ==和===有什么区别?
- 23. ==和===有什么区别?
- 24. 有什么区别? :和||
- 25. ==和===有什么区别?
- 26. '=='和'==='有什么区别?
- 27. `&`和`ref`有什么区别?
- 28. 有什么区别:。!和:r!?
- 29. | 0和~~有什么区别?
- 30. Appender和〜有什么区别?
这是不正确的。 RPC也是基于Java的。 JAX-RPC 1.1被替换为2.0,然后被重命名为JAX-WS。在Java中,当您谈论RPC时,您正在谈论SOAP和Web服务。这是一篇关于JAX-RPC 1.1更改为JAX-WS的文章。 http://www.ibm.com/developerworks/library/ws-tip-jaxwsrpc/ – MattC 2015-04-10 14:19:52
@MATC我认为你链接的文章指出,这个名字的原因从“JAX-RPC”改为“JAX-WS “的确如此,原来的名称并不准确,因为该规范涉及的不仅仅是传统意义上的”RPC“。所以这个答案,谈论RPC传统意义,仍然是正确的。 – 2016-05-11 08:55:38
是的,我的意思是RPC起源于C/Unix世界(至少是最常见的RPC实现,ONCRPC),因此它是在该计算模型之后建模的;当然没有什么可以阻止在任何其他编程语言的基础上实现它的误导性答案 – fortran 2016-05-12 15:13:55