分布式对象模型
远程对象
不仅是可以被本地进程访问,也可以远程进程调用;
本地对象
仅仅可以是本地进程使用
模型
下图中,A、B各代表一台服务器,当他们各自自己调用的时候,即为本地对象,当A中的对象调用B中的,则为远程对象,这时候如果要保证A、B中的对象之间能够可靠的进行消息通信,采用的是TCP协议作为通信协议
RMI基本原理
分布式对象模型有很多种,比如CORA、SOAP、RMI;然后来主要学习一下RMI;
RMI(Romote Method Invocation)–远程调用方法,它具有java的“Write Once,Run Anywhere”的优点,它需要运行在JRE环境中,所以跟非java语言开发的系统不能进行通信。
RMI它是采用代理然后负责客户与远程对象之间通过Socket进行通信的。然后它为远程对象分别生成了客户端代理(存根,Stub)和服务器代理(骨架,Skeleton);
存根发送给服务器的信息:
- 被访问的远程服务器的名字
- 被调用的方法的描述
- 编组后的字节序列
骨架对象接收到请求后,然后执行:
- 把字节序列反编译成参数
- 然后定位找到远程对象
- 调用远程对象的方法<