Java RMI和RPC之间的实际区别是什么?
我在一些地方读到RMI使用对象?
RPC基于C语言,因此具有结构化编程语义;而RMI是基于Java的技术,它是面向对象的。
在RPC中,您只能调用导出到服务器的远程函数,在RMI中,您可以引用远程对象并调用其方法,并且还可以传递和返回更多的远程对象引用,这些引用可以分布在许多JVM实例之间,因此它更加强大。
当需要开发比纯客户端-服务器架构更复杂的应用程序时,RMI非常突出。它非常容易在网络上分布对象,使所有客户端都能够通信,而无需显式地建立单独的连接。
RPC与RMI的主要区别在于RMI涉及到对象。我们不再使用代理函数来远程调用过程,而是使用代理对象。
RMI更透明,这主要归功于对象、引用、继承、多态和异常的利用,因为这些技术已经集成到语言中。
RMI比RPC还要先进,允许动态调用,其中接口可以在运行时更改,以及提供了一个额外的抽象层对象适配器。
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(简单对象访问协议)
远程过程调用(RPC)是一种进程间通信方式,允许在本地或远程计算机上调用另一个进程中的函数。
远程方法调用(RMI)是一个API,使用面向对象的编程范式在Java中实现了RPC。
您可以将调用RPC视为调用C程序。RPC支持原始数据类型,而RMI支持将方法参数/返回类型作为Java对象。
RMI易于编程,不像RPC那样复杂。您可以将业务逻辑视为对象,而不是原始数据类型的序列。
RPC是语言无关的,而RMI仅限于Java。
RMI比RPC略慢。
请查看此文章以获取C语言中的RPC实现。
RMI和RPC的区别在于:
method
和 function
之间有什么不同,但没有明确说明?在 Java 中没有函数...但在面向对象编程中,据我所记,它们是同义词,invocation
和 call
也是如此。 - minsRPC 是一种基于 C 的老协议。它可以调用远程过程并使其看起来像本地调用。RPC 处理传递该远程调用到服务器并将结果返回给客户端的复杂性。
Java RMI 也实现了同样的功能,但略有不同。它使用对远程对象的引用。因此,它发送一个远程对象的引用以及要调用的方法的名称。这更好,因为在大型程序的情况下会产生更清洁的代码,并且对象在网络上的分布使多个客户端能够调用服务器中的方法,而无需单独建立每个连接。
RMI
与.Net中的gRPC
类似... - Yousha Aleayoub