RMI技术原理及分析

(1)是什么
Remote method invocation远程方法调用。
计算机对象之间相互调用对方函数,启动对方进程的一种机制。使用的语法规则和在本地机上对象间的方法调用的语法规则一样。
本质:提供一种远程的方法调用,简单方便,可传递复杂JAVA对象。

(2)做什么
     实现不同JVM之间的调用
     实现方法:两个JVM中各开一个Proxy和skeleton。二者通过socket实现参数和返回值的传递。简化了在多台计算机上的JAVA应用之间的通信。
     说明:proxy:类似RPC中的client stub,即主程序端的子程序代理;代理作用:将对象的方法调用编组成消息,并对应答消息解编。skeleton:server stub即子程序主程序代理,作用:请求消息解编,应答消息编组

(3)用到的类
java.rmi.Remote:所有可被远程调用的对象都必须实现该接口
java.rmi.server.UnicastRemoteObject :所有可被远程调用的对象必须扩展该类

(4)实现步骤
1)定义一个远程接口的接口
   直接或间接继承java.rmi.Remote接口
   接口中所有方法声明抛出java.rmi.RemoteExeption
2)定义实现该接口的类
3)生成proxy 和skeleton
4)创建服务器,发布2)中写的类
5)创建客户程序进行RMI调用

(5)优点
1)面向对象:可将完整的对象作为参数和返回值传递,而不仅是预定义的数据类型。如类似JAVA哈希表这样的复杂类型作为一个参数传递(哈希表是个对象???)
2)可移动属性:可将属性在客户机和服务器间移动
3)安全:RMI使用JAVA内置的安全机制保证下载执行程序时用户系统的安全
4)并行计算:多线程处理
5)编译一次,到处运行:任何基于RMI的系统均可完全移植到任何JAVA虚拟机上。
6)便于编写和使用;远程接口实际上是JAVA接口,但远程接口不包含任何方法,需建一新接口扩展远程接口

(6)缺点
    从网络协议栈观点看,基于socket的网络编程位于TCP之上,RMI位于TCP协议之下,会丧失一些灵活性和可控性。 不需关心消息是如何序列化的,只需像本地方法调用一样。代价:应用开发者无法很好地控制消息的序列化机制。

(7)应用
现在流行的j2EE中的EJB的底层实现技术就是RMI,EJB的调用就是经过封装的,更高级的RMI


(8)与RPC的区别

1)语言:RPC支持多语言,RMI只支持JAVA
2)对象概念:RMI调用远程对象方法,允许返回JAVA对象及基本数据类型。而RPC不支持对象概念
3)方法调用:最主要区别。RMI中,远程接口使每个远程方法都有具体方法签名;RPC中请求包含了一个参数集和一个文本值,RPC服务器搜索与之相匹配的类和方法,并把它作为方法参数类型的输入,匹配成功则调用
简单来说:RMI是面向对象的JAVA RPC

(9)与CORBA的区别
相互竞争,相互补充
两者结合成RMI_IIOP:企业服务器端JAVA开发的基础,结合了RMI——较少的资源占用量和CORBA的健壮(common object Request Broker Architecture公共对象请求代理体系结构)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值