远程对象方法调用并不是新概念,远程过程调用 (RPC-remote procedure call) 已经使用很多年了。远程过程调用被设计为在应用程序间通信的平台中立的方式,它不理会操作系统之间以及语言之间的差异。即 RPC 支持多种语言,而 RMI(Remote Method Invocation)只支持 Java 写的应用程序。
另外 RMI 调用远程对象方法,允许方法返回 Java 对象以及基本数据类型。而 RPC 不支持对象的概念,传送到 RPC 服务的消息由外部数据表示 (External Data Representation, XDR) 语言表示,这种语言抽象了字节序类和数据类型结构之间的差异。只有由 XDR 定义的数据类型才能被传递, RPC 不允许传递对象。可以说 RMI 是面向对象方式的 Java RPC 。
RMI和RPC之间最主要的区别在于方法是如何被调用的。在RMI中,远程接口使每个远程方法都具有方法签名。如果一个方法在服务器上执行,但是没有相匹配的签名被添加到这个远程接口上,那么这个新方法就不能被RMI客户方所调用。
在RPC中,当一个请求到达RPC服务器时,这个请求就包含了一个参数集和一个文本值,通常形成“classname.methodname”的形式。这就向RPC服务器表明,被请求的方法在为“classname”的类中,名叫“methodname”。然后RPC服务器就去搜索与之相匹配的类和方法,并把它作为那种方法参数类型的输入。这里的参数类型是与RPC请求中的类型是匹配的。一旦匹配成功,这个方法就被调用了,其结果被编码后返回客户方
相关推荐
Java RPC和RMI代码实战,有关键注释,为最简案例。Maven搭建,JDK8编译。 RPC体验:依次运行RpcProvider和RpcConsumer类。 RMI体验:RMITest中依次运行testServer和testClient方法。
分布式系统中的通信机制是系统能否高效、稳定运行的关键,其中最为人熟知的两种通信方式分别是远程过程调用(RPC)和远程方法调用(RMI)。本文将详细阐述这两种技术的工作机制及其在分布式系统中的应用。 分布式...
RPC(Remote Procedure Call)和RMI(Remote Method Invocation)都是分布式计算中的关键技术,它们允许程序在不同的计算机上相互通信,仿佛这些方法或过程是在本地执行一样。然而,两者之间存在一些重要的区别。 ...
了解和掌握RPC与RMI对于开发分布式系统和构建可扩展的网络服务至关重要,它们为跨网络的协作提供了强大的工具,使得软件设计可以更加模块化和松耦合。通过深入学习和实践,开发者可以更好地利用这些技术来解决复杂的...
RPC(Remote Procedure Call)和RMI(Remote Method Invocation)是两种在分布式系统中实现跨网络对象调用的技术,常用于构建分布式应用。本示例程序是关于如何利用RPC和RMI来实现一个简单的加法运算,这对于理解这...
本文主要讨论的是如何将Hessian RPC与RMI技术整合到Structs、Spring、Hibernate和Ibatis这四个关键的Java开发框架中,以构建一个高效、灵活的分布式应用程序。 1. **Hessian配置说明**: Hessian的配置通常涉及...
### RMI与RPC的区别 - **语言绑定**:RMI是Java特有的,而RPC可以跨多种编程语言。 - **接口定义**:RMI需要定义Java接口,而RPC通常涉及更通用的协议描述,如XML-RPC或gRPC。 - **序列化**:RMI使用Java的序列化...
RMI与RPC之间的区别还表现在它们的调用机制和协议上。RMI采用stubs和skeletons来进行远程对象的通信,stub充当远程对象的客户端代理。而RPC通常采用客户端/服务器方式,通过请求/响应模式,发送请求到服务器端执行...
在IT行业中,分布式服务框架是实现大规模系统高可用、高性能的关键技术之一,而Dubbo、Hessian和RMI则是其中的三个重要组件。本篇将深入解析这些技术及其在实际应用中的示例。 首先,Dubbo是阿里巴巴开源的一款高...
在IT领域,分布式通信是实现跨网络系统交互的关键技术之一,其中远程方法调用(RMI)和远程过程调用(RPC)是最为常见的两种机制。本文将深入探讨这两种技术的特点、工作原理以及它们之间的异同,以帮助程序员更好地...
远程调用一般分为两种,远程过程调用(RPC)和远程方法调用(RMI)。 RPC RPC属于函数级别的远程调用,其多是通过HTTP传输数据,数据形式有XML、JSON、序列化数据等。在此,用python做一个xml-rpc的示例。 先给...
java运行依赖jar包
虽然RMI和RPC在概念上有相似之处,但它们在实现上存在一些关键区别: 1. **语言支持**:RPC是语言无关的,可以应用于各种编程语言,而RMI是Java平台专有的。 2. **对象传输**:RMI支持对象的传输,即调用结果可以...
java运行依赖jar包
文件"角色_ RPC_原理 _RMI.mp4"可能是一个视频教程,详细讲解了这些概念,包括如何设置和运行Dubbo示例,RPC的工作流程,以及RMI在其中的角色。通过观看这个视频,开发者可以获得更直观的理解,并能够将理论知识应用...
- RMI与RPC的主要区别在于RMI仅限于Java环境,而RPC则具有更好的跨平台兼容性。 - RMI在Java生态系统中更加高效便捷,而RPC则更适合需要多语言支持的场景。 #### Java RMI与JMS 1. **概念差异**: - **RMI**:...
在本项目"RPC-code_rpc_"中,我们关注的是RPC的实现,特别是通过Thrift和RMI两种技术进行服务器间的交互。 **Thrift** 是Facebook开源的一种高性能、跨语言的服务交互框架。它的主要功能是生成跨语言的客户端和...
- **与Sun RPC和DCERPC的区别**: - RMI不是语言/机器独立的。 - RMI支持类中的方法概念。 - RMI支持多态性。 #### 二、RMI的核心组件 在运行使用RMI的程序时,涉及三个主要实体: 1. **客户端(Client)**:这...
RMI的基础是远程过程调用(RPC),它允许一个进程调用另一个进程(可能在远程主机上)中的过程,从而实现了过程的分布能力。相比于传统的RPC,RMI进一步简化了分布式对象之间的通信机制,使得开发者能够更加专注于业务...