CORBA的事件机制以及对象适配器简介

来源:互联网 发布:复杂网络实例 编辑:程序博客网 时间:2024/05/21 00:48

 

1.对象管理组事件服务(Event Service)

CORBA通过使用事件服务实现异步调用。事件模型中事件提供者生成事件,事件使用者接收事件,事件提供者和事件使用者都连接在一个事件通道上。事件通道将事件从提供者传送到使用者,且不需要提供者事先了解使用者情况。

对象管理组事件服务提供两种事件发送模型:推模型(push model)和拉模型(pull model)

(1).推模型:

事件提供者将事件推送给事件通道,事件通道将事件推送给事件使用者。

(2).拉模型:

事件使用者从事件通道拉回事件,而事件通道又从事件提供者拉回事件。

2.事件通道支持的事件发送模型:

(1).经典的推模型:

事件提供者将事件推向事件通道,事件通道又将这些事件再推向所有注册的事件使用者。事件提供者是事件主动发起者,而事件使用者只是被动的等待接收事件,事件通道扮演通报者角色。经典的推模型是最常用的事件发送模型。

(2).经典的拉模型:

事件使用者将事件从事件通道中拉出来,然后事件通道又将事件从事件提供者中拉出来。事件使用者是事件的主动发起者,事件提供者被动等待事件被拉走,事件通道起着中介作用。

(3).混合推/拉模型:

事件提供者将事件推向事件通道,事件使用者又把事件从事件通道中拉出来,在此模型中事件提供者和事件使用者都是主动方,事件通道起着队列的作用,事件通道只是将事件提供者推入的事件数据存储起来,直至事件使用者将事件数据从事件通道中拉走。

(4).混合拉/推模型:

事件通道将事件从事件提供者拉出,然后将事件推送给事件使用者,在此模型中事件提供者和事件使用者都是被动的,事件通道起着一个只能代理的作用。

3.事件通道:

事件通道既是事件提供者,又是事件使用者。事件通道通过代理接口代表实际的事件提供者和事件使用者。

4.CORBA对象状态和伺服程序声明周期:

5.对象适配器POA

POAPortable Object Adapter,可移植对象适配器。在CORBA中,对象适配器作为伺服程序和对象请求代理(ORB)之间的纽带,适配器将一个对象接口配置给调用程序所需要的不同接口,即一个对象适配器是一个插入式对象,它用来作为代理,允许调用程序在不知道对象实际接口情况下调用一个对象的请求。

POA是一个对象管理器,类似于java中的EJB容器,或者SpringIoC容器,主要用于负责创建、激活、定位以及回收对象等操作。

POA主要作用为:

(1).创建对象引用。

(2).创建对象标识符。

(3).创建并注册伺服程序,并伺服程序通过POA来实例化CORBA对象。

6.CORBA通过POA请求调用流程:

7.POA策略:

POA规范的关键特性是一个应用程序可以包含多个POA实例,每一个POA实例代表具有相似性能的一组对象。这些性能通过POA创建时所指定的POA策略来控制。所有的服务器应用程序至少有一个POA,也就是Root POA,它具有标准的策略集。

(1).生存期范围策略:

a.TRANSIENT:暂态策略,默认标准的生存期策略。

b.PERSISTENT:持久态策略。

(2).对象标识符策略:

a.SYSTEM_IDPOA在创建对象标识符时,自动产生唯一的IDPOA默认策略。

b.USER_IDPOA在创建对象标识符时,通过产生异常来防止两个相同的ID

(3).对象与伺服程序之间映射策略:

a.UNIQUE_IDPOA对每个对象标识符必须映射到一个不同的伺服程序,POA默认策略。

b.MULTIPLE_IDPOA对多个对象标识符可以映射到同一个伺服程序。

(4).隐式激活策略:

a.IMPLICIT_ACTIVATION允许POA隐式创建和激活CORBA对象。

b.NO­_IMPLICIT_ACTIVATION只允许POA显示创建和激活CORBA对象POA默认策略。

(5).请求与伺服程序之间匹配策略:

a.USE_ACTIVE_OBJECT_MAP_ONLYPOA为请求使用已有的伺服程序,POA默认策略。

b.USE_DEFAULT_SERVANTPOA为请求使用默认的伺服程序。

c.USE_SERVANT_MANAGERPOA通过调用伺服程序管理器确定创建一个新的伺服程序或复用一个已存在的伺服程序。

(6).对象标识符到伺服程序关联策略:

a.RETAIN:每次接到一个请求时,POA期望应用程序提供目标对象标识符作为查找伺服程序的索引,POA默认策略。

b.NON_RETAINPOA不需要应用提供目标对象标识符,而是通过调用应用程序提供的伺服程序管理器或应用程序提供的默认伺服程序管理器处理请求。

(7).请求线程策略:

a.ORB_CTRL_MODELORB受控模型,允许多个并且的请求由多线程来处理,POA默认策略。

b.SINGLE THREAD_MODEL:单线程模型,POA使用单线程顺序处理请求。