### RMI原理及应用知识点详解 #### 一、RMI简介与背景 - **RMI (Remote Method Invocation)** 是一种允许在不同的Java虚拟机(JVM)之间调用方法的技术。它使得开发人员能够像调用本地对象一样调用远程对象的方法,极大地简化了分布式系统的编程模型。 #### 二、RMI的演变 - **早期通信方式**:在分布式系统中,Java最初支持的是Socket通信。Socket通信虽然具有灵活性和扩展性强的优点,但需要客户端和服务端在应用级别定义通信协议,这增加了开发难度。 - **RMI的提出**:随着Java的发展,为了简化远程对象之间的调用,引入了RMI技术。RMI旨在解决Socket通信中的问题,提供更简便的远程对象调用方式。 #### 三、RMI的核心概念 - **RPC (Remote Procedure Call)**:是一种分布式计算中常见的模式,允许一个进程调用另一个进程中的函数或方法,通常是在远程主机上运行的。RMI基于RPC进一步发展,支持更多面向对象的特性。 - **分布式对象**:指分布在不同计算机上的对象,它们能够相互通信并协作完成任务。RMI提供了一种简单有效的方式来创建和管理分布式对象。 #### 四、RMI的工作原理 - **架构设计**: - 在Java 1.2之后,RMI不再需要Skeleton,而是通过反射机制实现远程方法调用。 - 客户端和服务端通过定义好的接口进行交互,这个接口层负责处理远程对象引用的创建和管理。 - 请求/应答消息的传输由底层的通信层负责。 - **编列(Marshal)**: - 编列是指将方法调用的参数转换为序列化形式的过程,以便通过网络传输。 - 当客户端调用Stub时,Stub会将方法参数转换为序列化形式。 - **参数传递**: - 对于基本数据类型,RMI以传值的方式进行序列化。 - Java对象如果实现了`Serializable`接口,则通过Java序列化机制进行序列化,并以传值的方式进行编列。 - 如果对象或其成员对象未实现`Serializable`接口且未声明为`transient`,则编列过程会失败,并抛出异常。 - 客户端可以调用远程对象,包括作为参数传递的远程对象。 - **请求处理(Skeleton)**: - Skeleton对象负责将接收到的请求转换为对实际远程对象的方法调用。 - 所有的序列化参数需要经过反编列(Unmarshal)过程,转换为服务器端的本地形式。 - 远程对象的引用在服务器端被转换为本地的Stub对象。 #### 五、RMI的应用场景 - **RMI-IIOP**:结合CORBA的IIOP协议,使得RMI可以跨语言平台使用。 - **EJB (Enterprise JavaBeans)**:在J2EE中,EJB依赖RMI来实现远程对象的调用。 - **分布式应用**:广泛应用于分布式数据库、分布式计算等场景中,提供高效可靠的远程对象访问能力。 #### 六、总结 RMI作为Java生态系统中一项重要的分布式技术,极大地简化了远程对象调用的过程。通过对RMI原理的深入理解,我们可以更好地利用这项技术来构建高效、稳定的分布式系统。无论是对于初学者还是有经验的开发者来说,掌握RMI的相关知识都是非常有价值的。

- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 2018-2019高中地理第六章人类与地理环境的协调发展附6GPS与GIS地理信息技术的应用必修2.ppt
- 通信工程专业单片机系统设计、仿真与程序设计指导书.doc
- 基于单片机控制的数字音乐盒的方案设计书.doc
- CAD技术在水利水电工程中的应用.doc
- 计算机应用技术专业剖析报告.doc
- DSPG语音压缩算法设计方案与实现.doc
- 电气控制与PLC课程方案设计书任务书.doc
- 移动互联网技术在配电运检专业的应用.docx
- 计算机发展现状及趋势分析.docx
- 优化设计方案控制工程造价-项目管理论文.docx
- 机房系统集成需求分析.doc
- 论网络黑客的刑法规制.docx
- 形象化教学法在计算机网络课程课堂教学中的运用探索.docx
- 虚拟社会环境下的网络舆情现状分析.docx
- 电气工程及其自动化问题与对策研究.docx
- 与计算机视觉课程作业相关的代码


