hORB功能设计说明书 ver1.0 (草稿)


(by huihoo.com Allen)

hORB功能设计说明书 ver1.0 (草稿)

遵循标准 :OMG CORBA2.6
规范文档 : 请到ftp://ftp.omg.org/pub/docs/formal/01-12-01.pdf 下载CORBA2.6

本说明书分为五个部分:

第一部分:hORB功能一览
第二部分:hORB特点
第三部分:hORB部分功能详解
第四部分:OMG CORBA2.6规范实现详解
第五部分:hORB程序包结构

// 第一部分:hORB功能一览

(一) 对象的表示、行为与操作
。对象的语意与表示
。对象的生成(创建)
。值对象(Objects by value (OBV))
。对对象的操作
。对象引用的获取

(二) 对象实现
对象实现的不同方式

(三) 桩、框架的生成,语言映射的实现
。IDL Compiler
。支持到JAVA,C,C++的语言映射)

(四) 存储设备的实现
。实现存储库Implementatino Repository (IMR)
。接口存储库Interface Repository (IR)

(五) hORB标准接口的实现,包括:
1、DII : 动态调用接口Dynamic Invocation Interface
2、hORB interface
3、DSI : 动态框架接口Dynamic Skeleton Interface
4、对象适配器(Object Adapter)包括BOA,可移植的对象适配器Portable Object Adapter (POA)

(六) hORB专有接口(hORB-specific interface)的实现
不依赖于对象接口或对象适配器

(七) hORB Anys的动态管理(Dynamic Management of Anys(DynAny))

(八) hORB传输层部分标准协议(standard protocol:GIOP/IIOP)的实现
。GIOP
。IIOP :因特网ORB之间的协议(Internet Inter-ORB Protocol IIOP)
。SSLIIOP (SSL之上的IIOP)

(九) hORB对CORBA组件模型(CORBA Component Model)的支持

(十) hORB实现标准的CORBA服务:
如:名字服务、交易服务、生命周期服务等
CORBA Object Services 包括:
CORBA Naming Service
CORBA Trading Service
CORBA Property Service
CORBA Concurrency Service
CORBA Audio/Video Streaming Service
CORBA Time Service
CORBA Event Service
CORBA Telecom Log Service
CORBA Notification Service
CORBA Security Service
...

(十一) 标准工具
。接口库浏览工具:一个图形化的前端工具
。实现库管理工具:一个图形化的前端工具
。POA监视器:一个图形化的对象适配器监视器

(十二) hORB安全的实现
增强、改进的基于SSL的IIOP实现

(十三) hORB与COM,COM+的桥接

(十四) hORB与EJB的桥接

(十五) 域管理,一个对象域管理服务,包括基于GUI的域浏览工具



// 第二部分:hORB特点
。是一个多线程的ORB
。模块化的设计:即使在运行时使用加载的模块,新的传输协议和对象适配置器也可以很容易地链接到hORB上
。支持嵌套调用
。监听功能
。完全的BOA实现,包括所有的激活模式,支持对象转移,对象持久性,以及存储库的实现。在运行时,BOA可以使用加载模块在客户端加载对象实现
。符合公用对象服务规范(Common Object Services Specification (COSS)的可互操作的命名、事件、属性、关系、时间和交易服务
。基于GUI的IR brower允许您在任意接口调用任意方法
。对动态编程的全面支持:动态调用接口(Dynamic Invocation Interface DII)、动态框架接口(Dynamic Skeleton Interface DSI)、接口存储库(Interface Repository IR)、动态Any(Dynamic Any)
。对CORBA2.6代码集的支持
。对对象具有持久的支持
。hORB的激活模式库



// 第三部分:hORB部分功能详解

--对象实现包括两个模型:
。执行模型描述服务如何执行
。构造模型描述服务如何定义

--Any
。Any提供接口来插入和取出在编译时程序不认识的构造类型
。Any和TypeCode支持RM-ODP中定义的递归字类型

--表现层、存储部分
接口库(interface repository) 相当于hORB实现的外挂部分
CORBA接口库是一个类型为Repository的CORBA对象,它存储各种与OMG IDL数据类型想对应的原对象(meta object),如ModuleDef,InterfaceDef...。接口库的存储视图表现了层次结构,有两种类型的节点:页节点成为包含对象(Contained),非页节点为容器对象(Container),它是整个对象库的入口。接口库的信息来源主要是IDL文件
接口库主要包含:接口库查询实现部分和载入存储部分
接口库查询实现部分包含:客户方的接口库IDL桩、服务器方的接口库架构、接口库实现部分。它实现了所有的接口库规范描述的接口功。
载入存储部分包含:接口库存储文件、IDL编译器后端接口库载入接口部分

实现步骤:
。建立描述接口库接口的IDL描述文件。
。通过IDL编译器编译建立的IDL描述文件,生成客户桩和服务器架构。
。编写具体实现代码,实现接口库的接口功能。

载入存储部分是用来保证接口库的内容能够保存于非易失性存储器上的部件。该接口库设计采用文件系统来存储接口库对象信息。将IDL编译器前端生成的语法树映射成接口库内的描述对象,从而完成IDL文件描述信息到接口库描述对象的转换。接口库存储文件用于存储接口库对象内容及其互相之间关系,因此需要设计成嵌套式对象存储结构。

访问接口库的方式:
1、通过客户桩的方式访问
2、通过浏览器浏览接口库内的hORB/Web对象,但必须构造一个转换工具将接口库信息转换成超文本形式,再发布。缺点:得到的信息不是实时的。

--hORB支持的几种激活方式
。共享(shared):在几个客户间共享服务器,此方式增加了被服务的对象的数目
。持久(persistent):手工启动服务器,不是由BOA的新进程来启动的
。非共享(unshared):每个客户使用一个不同的服务器,只为一个对象服务
。每方法(per mothed):每个方法调用启动一个服务器
。库(library):服务器被定位到共享库并且按要求加载
。POA:使用POA的共享服务器

--对POA的支持 (是CORBA2.2引入)

(1)POA的特性:
。支持透明激活对象。服务器可以为尚未激活的且将要求被具体化的伺服对象输出对象索引
。允许单个伺服对象支持很多对象标识
。允许一个服务器上有多个POA,每个都有自己的一套管理策略
。将对不存在的伺服对象的请求委托给默认服务者,或者向伺服对象管理器请求一个合适的伺服对象

(2)POA体系:
。用resolve_initial_reference()操作可以得到根POA,根POA是默认创建的
。每个POA都有一个激活对象映射表(active object map),它将所有在POA中被激活的对象映射给一个伺服对象
。每个POA都关联着一个POA管理器对象(manager object),一个POA管理器可以控制一个或多个POA
。POA管理器的四种状态:激活状态、挂起状态、丢弃状态、无效状态
。与POA相关的几个概念:
对象索引:客户端和服务器端的不同表示
对象标识:它是一个不透明的八进制数序列。有时对象索引和对象标识作为同意词使用
伺服对象:一个伺服对象为一个或多个对象索引提供实现
它从基类PortableServer::ServantBase继承而来
它不是对象,不能从CORBA::Object继承
服务器:代表一个伺服对象存在的完整进程

(3)服务器--POA--伺服对象--对象索引 之间的关系:
一个服务器可以包含一个或多个POA,每个POA可以提供零个、一个、或多个激活的伺服对象,每个激活的伺服对象可以为一个或多个对象索引服务

(4)策略:影响POA行为的策略

(5)伺服对象管理器有两种类型:
伺服对象激活器(servant activator)、伺服对象定位器(servant locator)
提供两种操作:incarnate,etherealize

(6)ORB通过BOA、POA所提供的服务包括:
*对象引用的生成与解释
*方法调用
*交互的安全
*对象实现的激活和终止
*对象引用到对象实现的映射以
*对象实现的登记。
这些也是OA所具有的功能



// 第四部分:OMG CORBA2.6规范实现详解

-----------------
object model 部分
。object表示
。object requests
。object Types
。Interface
。Value types
。Abstract Interfaces
。object operation
。object attributes

-----------------
hORB核心部分
。对象实现(object implementation)
。对象引用(object References)
。IDL编译器(IDL compiler)
。值对象(Objects by value)OBV:它是介于常规IDL接口类型和结构类型之间的一个概念
。接口存储库Interface Repository
。POA, POAMonitor
。客户端桩Client Stubs
。动态调用接口(Dynamic Invocation Interface DII)
。实现框架(Implementation Skeleton)
。动态框架接口(Dynamic Skeleton Interface DSI)
。对象适配置器(Object Adapters OA)
。ORB Interface
。接口存储库(Interface Repository IR)
。实现存储库(Implementation Repository IMR)

-----------------
hORB接口部分
。hORB identity
。object_to_string,string_to_object
。get_service_infomation
。线程操作(thread operations)
work_pending
perform_work
run
shutdown
destroy

。对象引用操作(object Reference Operations)
get_interface
duplicate
release
is_nil
is_a
non_existent

get_policy
get_client_policy
get_policy_overrides
set_policy_overrides
validate_connection
get_domain_managers

。ValueBase Operations

。hORB,OA initialization
obtaining Initial Object References
Configuring Initial Service References

。上下文对象(Context Object)操作
get_default_context
set_one_value
set_values
get_values
delete_values
create_child
delete

。当前对象(Current Object)

。Policy Object

。策略的管理(management of Policies)

。策略域的管理(Management of Policy Domains)

。。。。。

-----------------
Value Type 部分

-----------------
Abstract Interface 部分

------------------
Dynamic Invocation Interface
。请求操作(Request Operation)
create_request // 创建一个请求
add_arg // 加入参数
invoke // 调用
delete // 删除
send // 发送
poll_response // 发出响应
get_response // 取得响应
sendp
prepare
sendc

。核心操作(hORB Operations)
set_multiple_ruquests // 发送多请求
get_next_reponse // 取得下一个响应
poll_next_reponse // 发出下一个响应

。Polling
is_ready //
create_pollable_set //
create_dii_pollable //
add_pollable //
get_ready_pollable //
remove //
number_left //

。列表操作(List Operations)
create_list // 创建一个列表
add_item // 添加一个条目
free // 释放
free_memory // 释放内存空间
get_count // 取得列表中的条目个数
create_operation_list // 创建一个操作列表

-----------------
Dynamic Skeleton Interface
DynAny API
。DynAny Interface
。DynFixed interface
。DynEnum Interface
。DynStruct Interface
。DynUnion Interface
。DynSequence Interface
。DynArray interface
。DynValueCommon Interface
。DynValue Interface
。DynValueBox interface

-----------------
其它部分
。Dynamic Any
。Trader extensions
。Implementation Repository and GUI
。Portable Interceptors
。SSL support, Bidirectional GIOP etc.
。Appligator, HTTP tunneling support (HTTP隧道支持)
。Domain Management Service
。IRBrowser
。Code Set Support
。JAVA language mapping
。c++ language mapping
。codeset converters

------------------
corba services 部分
。Naming Service
。Event services, etc.
。Transaction Service
。Collection Services
。Concurrency Service

// 第五部分:hORB程序包结构

com.huihoo.horb.coss (CORBA服务,提供公共服务的接口)
com.huihoo.horb.demon (对象适配器程序,基础类)
com.huihoo.horb.idl (接口定义语言)
com.huihoo.horb.imr (实现存储库和管理工具)
com.huihoo.horb.ir (接口存储库和IR服务器)
com.huihoo.horb.orb (hORB核心)
com.huihoo.horb.concurrency (协作控制服务)
com.huihoo.horb.events (事件服务)
com.huihoo.horb.naming (命名服务)
com.huihoo.horb.poa (可移植的对象适配器)
com.huihoo.horb.proxy (代理服务)
com.huihoo.horb.security (安全服务)
com.huihoo.horb.trading (交易服务)
com.huihoo.horb.transaction (事务服务)
com.huihoo.horb.ejb (corba-ejb桥)
com.huihoo.horb.com (corba-com桥)
com.huihoo.horb.ccm (hORB对corba组件模型CCM的支持)
com.huihoo.horb.domain (提供对象域管理服务)



参考资料:
1、OMG CORBA2.6 Specification
2、CORBA系统结构、原理与规范
3、MICO - 开源CORBA的实现
4、基于C++的CORBA高级编程
5、ATO http://www.cs.wustl.edu/~schmidt/TAO.html
6、MICO http://www.mico.org
7、jacORB http://jacorb.inf.fu-berlin.de/