远程对象方法调用并不是新概念,远程过程调用 (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请求中的类型是匹配的。一旦匹配成功,这个方法就被调用了,其结果被编码后返回客户方。
- 浏览: 496976 次
- 性别:
- 来自: 杭州
最新评论
-
herofighter2008:
图呢?图呢?图呢?图呢?
BlockingQueue -
zy13608089849:
请问一下博主,文中几处提到的图,怎么都没有?是我这显示不出来还 ...
BlockingQueue -
swift911:
在短信的场景下很好用,感谢分享
BlockingQueue -
tony_0529:
学习了~谢谢分享。
BlockingQueue -
Master-Gao:
...
BlockingQueue
相关推荐
【RMI与RPC的区别】 虽然RMI和RPC在概念上有相似之处,但它们在实现上存在一些关键区别: 1. **语言支持**:RPC是语言无关的,可以应用于各种编程语言,而RMI是Java平台专有的。 2. **对象传输**:RMI支持对象的...
- RMI与RPC的主要区别在于RMI仅限于Java环境,而RPC则具有更好的跨平台兼容性。 - RMI在Java生态系统中更加高效便捷,而RPC则更适合需要多语言支持的场景。 #### Java RMI与JMS 1. **概念差异**: - **RMI**:...
### RMI与RPC的区别 - **语言绑定**:RMI是Java特有的,而RPC可以跨多种编程语言。 - **接口定义**:RMI需要定义Java接口,而RPC通常涉及更通用的协议描述,如XML-RPC或gRPC。 - **序列化**:RMI使用Java的序列化...
#### RMI与RPC的对比 - **对象导向性**:RMI提供了一种更自然的方式来处理分布式的对象,而RPC则更关注于过程的调用。 - **语言支持**:RMI最初是Java的一部分,因此在Java环境中特别有效,而RPC可以在多种编程语言...
RMI与RPC的主要区别在于调用方法的方式。在RMI中,每个远程方法都有其方法签名,这意味着服务端的远程接口必须明确地声明所有可被调用的方法及其参数。如果服务器添加了一个新方法,但没有在远程接口中声明对应的...
Java RPC和RMI代码实战,有关键注释,为最简案例。Maven搭建,JDK8编译。 RPC体验:依次运行RpcProvider和RpcConsumer类。 RMI体验:RMITest中依次运行testServer和testClient方法。
分布式系统中的通信机制是系统能否高效、稳定运行的关键,其中最为人熟知的两种通信方式分别是远程过程调用(RPC)和远程方法调用(RMI)。本文将详细阐述这两种技术的工作机制及其在分布式系统中的应用。 分布式...
RPC(Remote Procedure Call,远程过程调用)与RMI(Remote Method Invocation,远程方法调用)是两种在分布式系统中实现跨网络通信的关键技术。它们允许一个程序在不关心远程服务器具体实现的情况下,调用远程...
RPC(Remote Procedure Call)和RMI(Remote Method Invocation)是两种在分布式系统中实现跨网络对象调用的技术,常用于构建分布式应用。本示例程序是关于如何利用RPC和RMI来实现一个简单的加法运算,这对于理解这...
总结,"dubbo_rpc_hession_rmi"这个主题涵盖了Dubbo作为RPC框架的核心概念,Hessian作为RPC协议的实现,以及RPC基础理论。通过学习这些内容,开发者可以更好地理解和应用分布式服务框架,提高系统的可扩展性和可维护...
RPC与RMI的区别主要在于,RPC是一种更抽象的远程过程调用技术,而RMI是RPC在Java语言中的一种具体实现,专门为Java环境设计。RMI不仅传递参数和返回值,还能传输Java对象,而RPC通常基于文本消息传递,例如使用HTTP...
文件"角色_ RPC_原理 _RMI.mp4"可能是一个视频教程,详细讲解了这些概念,包括如何设置和运行Dubbo示例,RPC的工作流程,以及RMI在其中的角色。通过观看这个视频,开发者可以获得更直观的理解,并能够将理论知识应用...
RMI的基础是远程过程调用(RPC),它允许一个进程调用另一个进程(可能在远程主机上)中的过程,从而实现了过程的分布能力。相比于传统的RPC,RMI进一步简化了分布式对象之间的通信机制,使得开发者能够更加专注于业务...
- **与Sun RPC和DCERPC的区别**: - RMI不是语言/机器独立的。 - RMI支持类中的方法概念。 - RMI支持多态性。 #### 二、RMI的核心组件 在运行使用RMI的程序时,涉及三个主要实体: 1. **客户端(Client)**:这...
本文主要讨论的是如何将Hessian RPC与RMI技术整合到Structs、Spring、Hibernate和Ibatis这四个关键的Java开发框架中,以构建一个高效、灵活的分布式应用程序。 1. **Hessian配置说明**: Hessian的配置通常涉及...
9. **测试与调试**:对RPC服务的测试往往比本地服务更复杂,因为涉及到网络和并发问题。项目可能包含测试用例和调试工具。 通过这个项目,你可以学习到如何使用Thrift和RMI这两种不同的RPC实现方式,理解它们的工作...
远程调用一般分为两种,远程过程调用(RPC)和远程方法调用(RMI)。 RPC RPC属于函数级别的远程调用,其多是通过HTTP传输数据,数据形式有XML、JSON、序列化数据等。在此,用python做一个xml-rpc的示例。 先给...