分享
 
 
 

CORBA的基本内容(上)

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

CORBA的基本内容(上)

(本文转载自软件工程专家网www.21cmm.com

苏洋

回顾上一讲中在介绍CORBA体系结构时,曾强调CORBA在提高组件重用性、增强分布计算功能方面具有的突出特点:

● 引入中间件作为事务代理;

● 客户程序与服务器程序完全分离;

● 与面向对象的建模概念相结合;

● 引入接口定义语言描述服务对象功能。

CORBA规范只是描述了CORBA系统中各个构件的基本情况以及构件在系统中承担的任务,并没有从功能实现的细节上规定必须如何建立一个基于CORBA规范的软件系统产品。这样,对于基于CORBA的软件产品开发而言,程序设计人员可以自由地选择实现方式,但前提是遵循规范中各个构件的实现原则。在本讲和下一讲中,将详细介绍CORBA中各个构件的主要内容。

对象请求代理(ORB)

1. 对象请求代理(ORB,Object Request Broker)的作用

在传统的基于客户机/服务器模式的应用程序开发过程中,项目开发人员遵循公开的标准或自由设计模块间的协议,这样的协议依赖于网络类型、实现语言、应用方式等。引入ORB后,客户只要遵循服务对象的对外接口标准向服务对象提出业务请求,由ORB在分布式对象间建立客户-服务对象关系。总结起来,ORB的作用包括:

● 接受客户发出的服务请求,完成请求在服务对象端的映射;

● 自动设定路由寻找服务对象;

● 提交客户参数;

● 携带服务对象计算结果返回客户端。

图1 客户服务请求示意图

由图1可以看出,客户(Client)向服务对象的实现(Object Implementation)发出事务请求,其中客户是欲对服务对象发出方法请求的实体,服务对象应包括该方法的数据资源以及实现代码。对象请求代理的作用就在于定位服务对象,接收客户发出的服务请求并将服务对象的执行结果返回给客户。请求发出后,客户对象采用轮询等方式以获取服务对象计算的结果。

2. ORB的结构及类型

ORB通过一系列接口和接口定义中说明的要实现操作的类型,确定提供的服务和实现客户与服务对象通信的方式。通过IDL接口定义、接口库或适配器(Adapter)的协调,ORB可以向客户机和具备服务功能的对象实现(Object Implementation)提供服务。作为CORBA体系结构的核心,ORB可以实现如下三种类型的接口:

● 对于所有的ORB实现具有相同的操作;

● 针对特定类型对象的操作;

● 与对象实现类型有关的操作。

基于ORB实现的不同类型接口,一个客户端请求可以同时访问多个由不同ORB实现通信管理的对象引用。在实际应用中,只要遵循公共的ORB体系结构,程序设计可以选择ORB的多种实现方式,其中包括:

(1)客户和实现驻留(Client-Implementation Resident)ORB:采用驻留在客户和服务对象实现程序的方式实现ORB。在这种实现方式下,客户端可以通过桩(Stub)程序,以位置透明的方式向具体的实现对象提出服务请求,实现客户与服务对象的通信。

(2)基于服务(Server-based)ORB:客户对象和实现对象均可以与一个或多个服务对象进行通信,服务对象的功能是将请求从客户端发送到对象实现。在这种方式中,ORB的作用是完成客户对象与实现对象的通信,为对象之间的交互提供服务。

(3)基于系统(System-based)ORB:在这种实现方式中,ORB被操作系统认为是系统所提供的一项基本服务。由于操作系统了解调用方与服务对象的位置,因而可以充分地实现ORB功能的优化。

(4)基于库(Library-based)ORB:如果认为对象实现可以共享,则可以将实现功能放入实现库(Implementation Repository)中,从而创建基于库的ORB。

3. ORB中的主要方法

客户端和服务对象端均可以自由选择使用ORB对象中定义的方法来实现操作。下面举例说明ORB对象中的重要方法:

(1)ORB ORB_init(inout arg_list argv,in ORBid orb_identifier)

作用:ORB初始化方法。

(2)String object_to_string(in Object obj)

作用: 将对对象的引用转换成客户可以用字符串方式存储的对象信息。

(3)Object string_to_object(in String str)

作用:上述方法的逆过程。将以字符串方式存储的对象转换成对对象类型的引用。

(4)Object resolve_initial_references(in ObjectID identifier)

作用:获取初始对象引用。

(5)Policy get_policy(in PolicyType policy_type)

作用:返回指定类型的服务策略对象。

作为公共对象请求代理体系结构中的核心内容,ORB提供了相当丰富的方法。读者可以查阅相关资料详细了解ORB中的方法。

4. 服务请求的实现方式

关于对象请求的实现方式,CORBA规范中定义客户程序可以用动态调用接口(DII,Dynamic Invocation Interface)方式或通过OMG IDL文件经编译后在客户端生成的桩(Stub)方式提出服务请求。这两种实现方式的区别在于通过OMG IDL桩(Stub)文件方式实现的调用请求中,客户能够访问的服务对象方法取决于服务对象所支持的接口;而动态调用接口调用方式则与服务对象的接口无关。尽管实现调用请求的方式有所区别,但客户发出的请求服务调用的语义是相同的,服务对象不去分析服务请求提出的方式。

ORB通过IDL客户桩(Stub)方式或动态调用接口(DII)方式定位服务对象的实现代码、传递服务对象应用参数以及完成对请求传送方式的控制。服务对象的实现(Object Implementation)通过对象适配器(Object Adapter)提供对客户请求的服务。客户对服务器端方法的调用方式见图2。

图2 客户调用服务请求的实现方式

从以上对服务请求调用方式的分析可以看出: 服务对象接口的定义在整个CORBA系统服务功能的实现中起着相当重要的作用。那么如何实现服务对象的功能接口呢?CORBA规范中定义了两种接口实现方式:第一种形式是利用OMG IDL接口定义语言对接口进行描述。IDL语言有详细的语法规则(讲座将在第五讲对该语言的语法规则进行详细讲解)。这样,经过对所实现功能的系统分析,利用IDL,依据服务对象可能实现的服务以及服务中需要的参数,对接口进行定义。另外一种方式是将接口放入接口仓库(Interface Repository)中,在运行期间对接口库中的接口进行访问。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有