Java RMI和RPC有什么区别?

Ara*_*ran 157 java rpc rmi

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

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

for*_*ran 131

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文章.http://www.ibm.com/developerworks/library/ws-tip-jaxwsrpc/ (18认同)
  • 对语义使用方式的一点意见不会使答案错误(或误导).任何阅读此内容的人都可以很容易地理解"基于C"基本上意味着"面向过程" - 任何学过Java的人都知道POP与OOP的区别. (6认同)
  • @MattC 我认为您链接的文章指出,这个名称从“JAX-RPC”更改为“JAX-WS”的原因正是原始名称不准确,因为该规范不仅仅涉及“RPC”在传统意义上。所以这个讨论 RPC 传统含义的答案仍然是正确的。 (2认同)
  • 是的,我的意思是RPC起源于C / Unix世界(至少是最常见的RPC实现,即ONCRPC),因此是根据该计算模型建模的;当然,没有什么可以阻止在任何其他编程语言之上实现它 (2认同)
  • @xji JAX-RPC 是基于 Java 的。最初的 Sun RPC 是基于 C 的,但这个想法可以用多种语言实现,包括 Java。 (2认同)

Hum*_*art 45

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

RMI具有更大的透明度,即由于技术被集成到语言中,因此利用了对象,引用,继承,多态和异常.

RMI也比RPC更先进,允许动态调用(接口可以在运行时更改)和对象适应(提供额外的抽象层).


Dha*_*ria 18

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


Rav*_*abu 10

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

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

  1. 你可以想到调用RPC就像调用C程序一样.RPC支持原始数据类型,其中RMI支持方法参数/返回类型作为java对象.

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

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

  4. RMI对RPC来说有点慢

在C中查看本文的RPC实现


Kyl*_*ndo 7

RMI或Remote Method Invokation与RPC或远程过程调用非常相似,因为客户端都将代理对象(或存根)发送到服务器,但是细微差别是客户端RPC 通过代理函数调用FUNCTIONS,RMI调用METHODS 通过代理功能.RMI被认为稍微优越,因为它是面向对象的RPC版本.

这里开始.

有关更多信息和示例,请查看此处.

  • 方法是java中调用的函数,函数是在c/c ++中调用的方法.那还有什么区别? (5认同)

小智 6

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


小智 6

RMI和RPC之间的区别在于:

  • RMI作为名称指示远程方法调用:它调用方法或对象.和
  • RPC它调用一个函数.

  • 您在方法和函数之间隐式强调但未弄清楚的区别是什么?在Java中没有函数……但是据我所记得,在OOP中,它们是同义词,因此“调用”和“调用”也是如此。 (2认同)