CORBA原理简介和实例

CORBA原理简介和实例

ID:38288848

大小:216.00 KB

页数:46页

时间:2019-06-07

CORBA原理简介和实例_第1页
CORBA原理简介和实例_第2页
CORBA原理简介和实例_第3页
CORBA原理简介和实例_第4页
CORBA原理简介和实例_第5页
资源描述:

《CORBA原理简介和实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、CORBA核心总体设计规划基于服务的ORB遵循公共ORB体系结构,可以有很多ORB的具体实现,比如客户与实现驻留ORB,基于服务的ORB,基于系统的ORB以及基于链接库的ORB等。考虑到我们今后利用本平台所作开发项目的具体情况以及我们目前的开发条件与能力,决定选用基于服务的ORB为开发目标。这种基于服务的ORB,对ORB进行集中式管理,所有的客户实现均可以与一个或多个服务器进行通信,这些服务器的功能是将请求从客户端发送到实现端。这样的话,ORB就可以做成一个普通的程序,以便运行在不同的平台上。总体结构客户对象实现ORB核心动态调用ORB接口可移植对象适配器用于所有O

2、RB实现的同一接口可能有多个对象适配器上调用下调用总体结构图本系统所采用的实现方法为:客户通过动态调用接口与ORB接口经ORB核心与具体的对象实现进行交互。具体结构如下图所示:参照CORBA2.3规范,本系统工作原理如下:Ø客户首先通过ORB核心提供的ORB接口得到一个对象引用。至于得到一个什么样的对象引用,取决于客户需要的服务。通常每个服务都会有一个标识,客户就是通过这个标识来识别每一个服务的。也就是说,客户首先要向ORB核心提交一个服务标识来请求一种服务。ØORB核心在得到客户提供的服务标识之后,从它掌握的各个对象适配器(POA)中处于活跃状态的对象实现(服务提

3、供者)中挑选一个。本系统中,ORB核心是通过查询一个POA、对象实现(服务标识)列表来完成这一功能的。这样的话,ORB核心返回给客户的对象引用具体地说就是该服务与POA对在本核心所持有列表中的位置。ØORB核心又是怎么得到并维护这个POA与服务标识的列表的呢?这个列表的创建与修改都是通过POA来完成的,因为与对象实现(服务提供者)直接交互的是POA,而不是ORB核心。对于服务是否可用的状态维护,本系统考虑了两种情况:一是ORB先于对象实现而运行;二是对象实现先于ORB而运行。其实这里所说的ORB主要是指ORB中的POA。第一种情况下,由对象实现在启动的时候主动向PO

4、A完成注册登记,即通过POA写入该列表;第二种情况下,由ORB在初始化的时候,通知POA搜寻所有已经注册过的对象实现(服务提供者),并把可用的服务记入该列表。Ø对象实现为了与对象适配器交互,也需要完成一个接口程序,也即仆从程序。它的作用主要是与POA联系并把POA传送过来的操作在本地实现并将执行结果返回给POA。数据流图在本系统中数据流与事务流图紧密相关,而且对于所有的请求与调用而言几乎都是一样的,这是由CORBA的定义所决定的。客户ORB核心对象实现数据流图其中,客户提交的数据是以对象引用为标识的。为了保证动态调用的实现,在本系统中客户与ORB核心是在同一应用实体

5、内的。但对于对象实现而言,则不一定要与ORB核心在同一应用实体内。功能模块划分为了有条不紊地实现整个系统,规划与开发的时候,可以把它划分为以下几个功能模块:1、ORB接口Stringobject_to_string(inObjectobj);Objectstring_to_object(instringstr);Ø与ORB初始化相关的操作ORBORB_init(incoutarg_listargv,inORBidorb_identifier);Ø与动态调用相关的操作voidcreate_list(inlongcount,outNVListnew_list);void

6、create_operation_list(inOperationDefoper,outNVListnew_list);//暂时不用voidget_default_context(outContextctx);//暂时不用voidsend_multiple_requests_oneway(inRequestSeqreq);voidsend_multiple_requests_deferred(inRequestSeqreq);booleanpoll_next_response();voidget_next_response(outRequestreq);Ø与初始引用

7、相关的操作Objectresolve_initial_references(inObjectIdidentifier)raises(InvalidName);2、动态调用接口Ø请求操作voidadd_arg(inIdentifiername,inTypeCodearg_type,inOpaqueValuevalue,inlonglen,inFlagsarg_flags);voidinvoke(inFlagsinvoke_flags);voiddelete();voidsend(inFlagsinvoke_flags);voidget_response()rais

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。