基于CORBA的分布式程序设计(Advanced CORBA Distributed Programming)(四)

来源:互联网 发布:笑郭网络验证3.9破解 编辑:程序博客网 时间:2024/06/07 07:07

 

2.3.3  系统集成

2-13 不同对象系统集成的方法

2.3.4 互操作

ORB 的互操作性提供了种易于理解的、方便的途径来支持网络中的对象,这些对象由多样的,不同种类的(与CORBA 兼容的)ORB管理。由于CORBA中的元素能以很多方式结合在一起以满足各种不同的需要,因此取得“interORBability”的方法很方便。

支持互操作的元素

能支持互操作的元素有::

1. ORB 互操作结构

2. Inter-ORB 桥支持(bridge support

3. General and Internet inter-ORB Protocols (GIOPs and IIOPs)

而且,该结构还支持environment-specific inter-ORB protocols (ESIOP),它能优化特定领域如DCE

ORB 互操作结构

该结构引入了ORB域中immediate and mediated bridging(直接桥接和间接桥接)这两个概念。IIOP是广域网桥接的基础。而inter-ORB 桥接既能用于直接桥接,也能用于半桥接,使用半桥接能搭建用于间接桥接。使用这些桥接技术,ORB能互操作,而不需要知道彼此的实现细节,如,使用何种特殊的IPC或协议(如ESIOP)来实现CORBA规范。

使用能用IIOP通讯的半桥接 两个或多个ORB能相互桥接在一起。这种方法既能用于单机ORB,也能用于网络ORBESIOPIIOP也能用于实现ORB中的内部消息机制。

Inter-ORB Bridge Support

互操作结构明确指出ORB中不同域的作用,这些域包括对象引用域(object reference domain),类型域(type domain),安全域(safety domain)(如the scope of a Principal identifier, 事物域(transaction domain)等等。

当两个ORB位于同一个域中,它们能直接通讯,多数情况下,这是一个很好的方法。但由于各个机构需要建造各自控制域,因此,这种方法不常使用。当需要的信息离开它的域时,就必须使用桥接来传递信息。桥接的作用是确保信息能完整的从一个ORB映射到另一个ORBinter-ORB 桥接支持也能提供与非CORBA系统(Microsoft’s Component Object Model (COM))之间的互操作。

General Inter-ORB Protocol (GIOP)

General Inter-ORB Protocol (GIOP) 元件提供了一个标准传输语法(低层数据表示方法)和ORB之间通信的信息格式集。GIOP只能用在ORBORB之间,而且,只能在符合理想条件的面向连接传输协议中使用。它不需要使用更高一层的RPC机制。这个协议是简单的(尽可能简单,但不是简单化),可升级的,使用方便。它被设计为可移动的、高效能的表现、较少依靠其它的低层传输协议。当然,由于不同传输使用不同版本的GIOP,它们可能不能直接协作工作,但它能很容易的连接网络域。

Internet Inter-ORB Protocol (IIOP)

Internet Inter-ORB Protocol (IIOP) 元件指出如何通过TCP/IP连接交换GIOP信息。IIOPInternet提供了一个标准的协作工作协议,它使兼容的ORB能基于现在流行的协议和产品进行“out of the box”方式的协作工作。它也能被用于两个半桥(half-bridges )之间的协议。该协议能用于任何ORBIPInternet Protocol)域之间的协作工作,除非ORB选择了特殊的协议。这时,它是TCP/IP环境下基本的inter-ORB 协议,最普遍的传输层。

IIOPGIOP的关系就象特特殊语言与OMG IDL之间的关系;GIOP能被映射到不同层,它能指定协议。就象IDL不能见招完整的程序一样,GIOP 本身也不能提供完整的协作工作。IIOP和不同传输层上的其它相似映射,实现抽象的GIOP定义,如图2-14所示。

2-14 Inter-ORB Protocol 关系

Environment-Specific Inter-ORB Protocols (ESIOPs)

它为使用Environment-Specific Inter-ORB Protocols (ESIOPs)的条件提出了解决方案。   

 

Domain()

域把一个系统中的元素按照某种特征分成几个部分。在本结构中,域是一个范围,一个对象的集合,对象是域的成员,这些成员有共同的特征。可以把域看作是一个对象,它本生也可能是其它域的一个成员。

2-15 各种类型的域

CORBA中的域分为以下几个部分:

Referencing domain – 对象引用范围

Representation domain – 信息传输语法和协议范围

Network addressing domain –网络地址范围

Network connectivity domain – 可能的网络信息范围

Security domain – 特殊安全策略

Type domain – 特殊标识符范围

Transaction domain –特定事物服务范围

有两种方式使用域:一是嵌入,一个域包括在另一个域中;二是联合,两个域联合起来使用。当两个域的边界上发生交互作用时,就需要使用一种映射机制(如桥接)在边界处传递相关元素。这里有两种方法,一是间接桥接(mediated bridging),一是直接桥接(immediate bridging)。

2-16 两种桥接技术, 都用于两个域之间

1. Mediated Bridging

使用间接桥接时,在每一个域的边界上,以一种协商的、通用的格式来传递与域有关的元素。可以从以下几个方面来观察间接桥接:

(1)公共格式的应用范围可能与两个ORB/域的私下约定不同。

(2)可能有多个公共格式,每一种格式对应一个应用目的。

(3)如果有多个可供选择的公共格式,选择方式可以分为两种,一是静态选择(两个ORB开发商之间),二是动态选择(每一个对象各自选择)。

(4)这种方法随着嵌入式编译(与stub相比)或普通的库代码(如加密例程)的不同,它的格式不同

2Immediate Bridging

使用直接桥接时,在每一个域的边界上,相关的元素直接从一个域的内部格式转到另一个域的内部格式。

可以从以下几个方面来观察间接桥接:

(1)这种方法有被优化的可能性(这时交互不通过第三方)但它是以牺牲灵活性和通用性来取得的。

(2)一般只当需要在与边界传递纯管理(不交换技术)才使用这种方法。例如,当需要在两个相似ORB的安全管理域传递消息时,就不需要使用通用的间接标准。

综上所述,当两个ORB/域使用私有机制时,就比较难于区分这两种方法。

3Inter-Domain Functionality的位置

从逻辑上讲,不论是间接桥接还是直接桥接,只要是域间桥(inter-domain bridge),它在两个域中都有元素。但是,一方面,域可以跨越ORB边界,而ORB也可以跨越机器和系统边界;另一方面,一个机器或一个进程可能跨越多个ORB。从工程学的角度来讲,这意味着一个域间桥中的元素根据ORB或系统的不同而采取分散或同处的分布方式。例如,如果一个ORB包括两个安全域,那么,域间桥就可以在ORB的内部实现。同样的,也可能在一个进程或系统中实现两个ORB或域间的桥。从工程学来讲,这种情况下,域间桥是有限的,它局限于单个系统或进程。如果所有的桥都用这种方式实现,那么系统或进程之间的协作只能在单个域或ORB中发生。

4.桥接级别(Bridging Level

桥接可以在ORB级或更高以及实现。它们分别叫做嵌入(in-line)级桥接和请求级(request-level)桥接。请求级桥接使用CORBA API,包括使用Dynamic Skeleton Interface,来接受和流出(issue)请求。但是,也存在“implicit context”类,它与某些引用联合起来,持有如事物信息和安全信息等的ORB Service信息,通常的API中部包括这种类。

5.网络中桥接的结构

在网络情况中的ORB,我们将引入“backbone”ORB的概念。不论是大型网络还是小规模网络倒要用到它。大型网络的制造商可以定义自己的中枢ORB,而小规模网络则选择一个商业的ORB作为它的中枢。

2-17 一个ORB作为中枢,它通过半桥和全桥连接其它的ORB

这种中枢结构是一种标准的网络管理技术。它能减少桥接又能满足网络馆管理。对于大型网络来讲,增加ORB桥接并不需要给网络线路增加新的节点(hop)。

桥接的种类

1.In-line Bridging(嵌入桥接)

嵌入桥接的代码位于ORB中,它完成必要的翻译和映射功能。它是两个ORB进行桥接的最直接方法。它与单个ORB中的系统进行侨界的结构相似(例如,间接使用某些内部处理通讯模式,如网络协议)。这表明,实现嵌入桥接可能会修改ORB中的某些基本的元素,例如插入新的内部处理通讯模式。(有一些ORB被设计成可以进行某些修改)。使用这种方法时,在不同级别上用软件元素的集成来完成所需要的桥接功能:

(1)面的ORB提供附加的或可选择的服务

(2)附加的或可选择的stubskeleton代码

2-18 使用ORB内部的API构造 In-Line bridges

2. Request-Level Bridging(请求级桥接)

请求级桥接的代码位于ORB的外面,它完成必要的翻译和映射功能。它通过位于不同执行环境中两个ORB的元素(一个ORB一个元素)使用普通协议(如网络、共享内存和主机操作系统提供的其他IPC)来达到目的,这种方法也叫做半桥

请求级桥接的基本原理:

(1)原始请求被传给client ORB 中的代理对象(proxy object)。

(2)代理对象把请求内容(包括目标对象引用)翻译成服务ORBserver ORB)能理解的格式

(3)代理引用透明服务对象上所需要的操作

(4)使用补充路径把操作结果返回给客户A

2-19 使用公共的ORB API构造 Request-Level bridges

CORBA Core定义了如下接口,使用它们能构造请求级桥接:

(1)Dynamic Invocation Interface (DII) 允许桥接能任意调用对象引用,而当建立桥接时不需要知道对象引用的类型。

(2)Dynamic Skeleton Interface (DSI) 即使当建立桥接时不知道对象引用的类型,也允许桥接手动地调用代理对象引用。

(3)Interface Repositories 桥接用来获取信息以驱动DIIDSI,这些信息包括操作参数的类型及返回值和意外。

(4)Object Adapters (例如Basic Object Adapter) 当引导桥接和映射对象引用(从一个ORB动态地传给另一个ORB)时,创建对象引用的代理器。

(5)CORBA Object References 提供操作,这些操作能完全描述它们接口和建造把对象引用映射到它们代理器(或反之)的表。Interface repositories 虽然半桥接使用的给定的池ID(如接口类型ID,意外ID)或操作ID必须一致,但是与半桥接相连的两边的接口池(Interface repositories )中的信息可以不一样。


 

 

 

 

原创粉丝点击