Java RMI和RPC之间的实际区别是什么?
我在某些地方读过RMI使用对象?
答案 0 :(得分:129)
RPC是基于C的,因此它具有结构化编程语义,另一方面,RMI是基于Java的技术,它是面向对象的。
使用RPC,您可以只调用导出到服务器的远程函数,在RMI中,您可以引用远程对象并调用它们的方法,还可以传递和返回可以在许多JVM实例之间分布的更多远程对象引用,因此它是更强大。
当需要开发比纯客户端 - 服务器架构更复杂的东西时,RMI脱颖而出。通过网络分布对象非常容易,使所有客户端无需明确地建立单独的连接即可进行通信。
答案 1 :(得分:44)
RPC和RMI之间的主要区别在于 RMI涉及对象 。我们不是使用代理函数远程调用过程,而是使用代理对象。
RMI具有更高的透明度,即由于技术被集成到语言中,因此利用对象,引用,继承,多态和异常。
RMI也比RPC更先进,允许动态调用,其中接口可以在运行时更改,对象适应,它提供了额外的抽象层。
答案 2 :(得分:17)
<强> 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(简单对象访问协议)
答案 3 :(得分:10)
远程过程调用(RPC) 是一种进程间通信,允许调用驻留在本地或远程计算机中的另一个进程中的函数。
远程方法调用(RMI) 是一种API,它在java中实现RPC,支持面向对象的范例。
您可以认为调用RPC就像调用C过程一样。 RPC支持原始数据类型,其中RMI支持方法参数/返回类型作为java对象。
与RPC不同,RMI很容易编程。您可以根据对象而不是一系列原始数据类型来考虑业务逻辑。
与RMI不同,RPC是语言中立的,RMI仅限于java
RMI稍微慢一点
在C
中查看这个article的RPC实现答案 4 :(得分:7)
RMI或Remote Method Invokation是 与RPC或Remote非常相似 程序调用客户端 两者都发送代理对象(或存根) 然而,服务器是微妙的 不同的是客户端RPC 通过代理调用 FUNCTIONS 函数和RMI调用 METHODS 通过代理功能。 RMI是 被认为略微优越 面向对象的版本的RPC。
来自here。
有关更多信息和示例,请look here。
答案 5 :(得分:6)
RPC和RMI之间唯一真正的区别是RMI中涉及对象:我们不是通过代理函数调用函数,而是通过代理调用方法。
答案 6 :(得分:6)
RMI和RPC之间的区别在于:
答案 7 :(得分:3)
RPC 是基于C的旧协议。它可以调用远程过程并使其看起来像本地调用.RPC处理将远程调用传递给服务器并获得结果的复杂性对客户。
Java RMI 也实现了同样的目标,但略有不同。它使用了对 远程对象 的引用。所以它的作用是它发送对远程对象的引用以及要调用的方法的名称。它更好,因为它在大型程序的情况下产生更清晰的代码,并且通过网络分发对象使得多个客户端能够调用服务器中的方法而不是建立每个连接单独。
答案 8 :(得分:1)
RMI或Remote Method Invokation与RPC或远程过程调用非常相似,因为客户端都将代理对象(或存根)发送到服务器,但是细微差别是客户端RPC通过代理函数调用FUNCTIONS并且RMI调用方法通过代理功能。 RMI被认为略胜一筹,因为它是面向对象的RPC版本。