什么是存根类 Stub

转:http://www.cnblogs.com/cy163/archive/2009/08/04/1539077.html

   存根类是一个类,它实现了一个接口,但是实现后的每个方法都是空的。
  
   它的作用是:如果一个接口有很多方法,如果要实现这个接口,就要实现所有的方法。但是一个类从业务来说,可能只需要其中一两个方法。如果直接去实现这个接口,除了实现所需的方法,还要实现其他所有的无关方法。而如果通过继承存根类就实现接口,就免去了这种麻烦

 

========================================================

什么是RMI
分布式计算系统要求运行在不同地址空间不同主机上的对象互相调用。各种分布式系统都有自己的调用协议,如CORBA的IIOP(Internet InterORB Protocol), MTS的DCOM。那么EJB组件呢?在Java里提供了完整的sockets通讯接口,但sockets要求客户端和服务端必须进行应用级协议的编码交换数据,采用sockets是非常麻烦的。
一个代替Sockets的协议是RPC(Remote Procedure Call), 它抽象出了通讯接口用于过程调用,使得编程者调用一个远程过程和调用本地过程同样方便。RPC 系统采用XDR来编码远程调用的参数和返回值。

但RPC 并不支持对象,而EJB构造的是完全面向对象的分布式系统,所以,面向对象的远程调用RMI(Remote Method Invocation)成为必然选择。采用RMI,调用远程对象和调用本地对象同样方便。RMI采用JRMP(Java Remote Method Protocol)通讯协议,是构建在TCP/IP协议上的一种远程调用方法。

RMI调用机制
RMI 采用stubs 和 skeletons 来进行远程对象(remote object)的通讯。stub 充当远程对象的客户端代理,有着和远程对象相同的远程接口,远程对象的调用实际是通过调用该对象的客户端代理对象stub来完成的。

 

stub

每个远程对象都包含一个代理对象stub,当运行在本地Java虚拟机上的程序调用运行在远程Java虚拟机上的对象方法时,它首先在本地创建该对象的代理对象stub, 然后调用代理对象上匹配的方法,代理对象会作如下工作:


与远程对象所在的虚拟机建立连接
打包(marshal)参数并发送到远程虚拟机
等待执行结果
解包(unmarshal)返回值或返回的错误
返回调用结果给调用程序
stub 对象负责调用参数和返回值的流化(serialization)、打包解包,以及网络层的通讯过程。
skeleton

每一个远程对象同时也包含一个skeleton对象,skeleton运行在远程对象所在的虚拟机上,接受来自stub对象的调用。当skeleton接收到来自stub对象的调用请求后,skeleton会作如下工作:


解包stub传来的参数
调用远程对象匹配的方法
打包返回值或错误发送给stub对象
远程对象的stub和skeleton对象都是由rmic编译工具产生的。
RMI-IIOP
RMI能够很好解决Java语言中分布式对象的调用问题,但RMI不是一个标准的调用协议,所以RMI不能调用非Java语言编写的对象。

IIOP(Internet Inter-ORB Protocol)是CORBA的通讯协议。CORBA是由OMG(Object Management Group)组织定义的一种分布式组件标准,通过和各种编程语言相匹配的IDL(Interface Definition Language),CORBA可以作到和语言无关,也就是说,用不同编程语言编写的CORBA对象可以互相调用。

JavaIDL定义了Java语言到CORBA之间的匹配,通过JavaIDL,用Java语言编写的应用程序可以和任何CORBA对象通讯。

RMI-IIOP结合了RMI的易用性和CORBA/IIOP的语言无关性,通过RMI-IIOP,RMI对象可以采用IIOP协议和CORBA对象通讯。RMI-IIOP对RMI的调用参数作了一些很轻微的限制,在调用CORBA对象时,必须遵循这些限制。JDK1.3已经提供对RMI-IIOP的支持。

Apusic Application Server对RMI-IIOP的支持
Apusic Application Server目前采用RMI,对RMI-IIOP的支持正在开发中,预计不久即会推出完全支持RMI-IIOP的新版本。

转载于:https://www.cnblogs.com/wangle1001986/p/3769750.html

### Stub 的概念与作用 Stub 是一种在网络协议栈设计中的重要组件,通常用于简化网络结构以及减少不必要的流量传输。以下是关于 stub 的定义、功能及其应用区域的具体说明: #### 1. **Stub 的定义** Stub 可以被理解为一种特殊的网络节点或子网,它仅接收来自外部的数据包而不转发数据包给其他网络[^1]。这种特性使得 stub 成为了一个终端型的网络单元,主要用于隔离复杂的路由计算和降低路由器的工作负担。 具体来说,在 OSPF(Open Shortest Path First)协议中,Stub 区域是一种特殊型的 OSPF 区域,其特点是不允许传播自治系统外部路由(即不接受 Type-5 LSA)。这有助于减少链路状态数据库的大小,并提高网络性能。 #### 2. **Stub 的功能与特点** - **减少 LSDB 大小**: 在 Stub 区域内,Type-5 LSA 不会被泛洪,从而减少了链路状态数据库 (LSDB) 中的信息量。 - **默认路由引入**: 对于 Stub 区域,默认会向该区域注入一条默认路由(0.0.0.0/0),以便设备能够访问外部网络。 - **增强稳定性**: 由于 Stub 区域屏蔽了外部路由的变化,因此可以有效提升网络的稳定性和收敛速度。 #### 3. **Stub 的分** 除了普通的 Stub 区域之外,还存在一些变种形式: - **Totally Stubby Area**: 完全存根区域不仅阻止 Type-5 LSA 的传播,同时也阻止 Type-3 和 Type-4 LSA 的进入,进一步缩小了 LSDB 的规模[^1]。 - **Not-So-Stubby Area (NSSA)**: NSSA 似于 Stub 区域,但它允许通过特定方式导入外部路由(例如使用 Type-7 LSA 转换为 Type-5 LSA)[^1]。 #### 4. **Stub 的应用场景** Stub 技术广泛应用于企业内部网络的设计当中,尤其是在以下场景中具有显著优势: - 当某些分支办公室不需要知晓详细的互联网拓扑信息时,可以通过配置 Stub 来隐藏这些复杂细节。 - 在大规模的企业园区网环境中,利用 Stub 或 Totally Stubby Area 减少核心路由器上的处理负载,优化资源利用率。 ```python # 示例代码展示如何在 Cisco 设备上配置一个基本的 Stub 区域 router ospf 1 area 5 stub ``` 以上代码片段展示了如何在一个名为 `OSPF` 的进程里将编号为 `5` 的区域设置成 Stub 区域。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值