CORBA 服务概述
三种最基本的服务
命名、生命期和事件服务,它们是仅在对象请求代理环境内才需要的操作。 在对象初次启动时,需要找到ORB上的其它对象。CORBA命名服务就好象是各个对象的电话簿,使大家可以找到这些服务;而交易器服务好象是电话黄页,让 大家都知道对象服务,协助大家找到这些服务;生命期服务则处理关键的存在性总是,包括使用期限、消亡以及再定位,使用户可以创建对象,到处传送这些对象, 以及撤消这些对象。事件服务在匿名对象之间提供异步交互作用,当ORB上发生重要事情时用户将得到通知。
对象命名服务
对象命名服务是ORB上的对象找到其它对象的基本机制。名字是用来识别一个对象的可人工辨认的值,命名服务将这些名字映射到对象标记,名字-对象关联叫做名字联编。命名语言环境是一个名字空间,对象名字在这里是独一无二的。每个对象都有一个独一无二的参考标识符。可以有选择 地将一个或多个名字与一个对象标记关联起来。相对于其命名语言环境始终定义一个名字。
此文章不是本人原创!
利用命名服务可以创建命名分层结构,客户 可以搜寻不同的命名语言环境树,查找所要的对象。来自不同域的名字语言环境可以一起使用,为对象创建联合命名服务。CORBA命名分层结构不需要一个“统一”的根目录。
对象生命期服务
对象生命期服务提供了创建、复制、和删除对象的操作。生命期服务最近已被扩展,这样所有这些操作现在可以在相关对象组之间处理关联问题,这包括包含 (containment)和标记关系,也包括对象之间的参照完整性限制。依照CORBA的Bauhuas原理(保持服务的简单性和专注性),可以利用关 系服务定义这些关系。更准确的说,生命期服务提供了由关系服务派生而来的接口。
要创建一个新对象,客户
必须找到一个工厂(factory)对象(即一个知道如何实例化那一类对象的对象),发出创建(create)请求,获得一个对象标记。客户还可以用复制
(copy)操作克隆一个已有的对象,从而创建一个新对象。这个工厂对象必须找到资源,获得对象标记,向对象适配器和实现储存库注册 新对象。当对象在机器之间复制时,就会涉及到目标上的工厂对象。
事件服务
事件服务允许对象动态地注册或注销它们所感兴趣的特定事件。一个事件(event)是在一个对象内发生的事件,而这个对象是某一个或多个对象感兴趣的。一 个通知(notification)是某个对象送到感兴趣的对象那里的消息,告知它们某个事件发生了。通常发生事件的对象不必知道感兴趣的对象。这由事件 服务来处理,事件服务在相互不是很了解的对角之间建立起一条宽松耦合的通信信道。事件的耦合远比过程调用要松,但比面向消息的中间件(MOM)要紧。
事件服务可以解耦合对象之间的通信。这个服务为对象定义了两个角色:提供者和使用者。提供者产生事件,使用者通过事件处理器处理这些事件。事件利用标准 CORBA请求在提供者和使用者之间进行通信。有事件数据传送模型:push模型和pull模型。在push模型中,事件的提供者起带头任用,发起事件的 数据传送;在pull模型中,事件的使用者起带头任用,向提供者请求事件数据。事件信道(event channel)是一个既是事件提供者又是事件使用者的插入对象,它允许多个事件提供者与多个使用者异步的通信,不需要互相了解。事件信道又是一个标准的 CORBA对象,驻留在ORB中,断开提供者和使用者之间的通信。事件信道同时支持push和pull两种事件通知模型。
一般的事件信道对象不了解它所的数据内容,它仅仅传递属于类型any的单个参数,提供者和使用者必须同意公用事件语义。但是,事件服务还支持类型化事件 (typed event)模型,允许应用程序用接口定义语言描述事件内容,传递的参数必须仅仅是输入,不返回任何消息。类型化事件同时支持push和pull两种模 型。利用IDL语言,可以定义特定事件的类型,如文档或者系统管理事件。这样使用者可以预定某个特殊事件类型,类型成了过滤事件信息的强有力工具,用户可 以追踪的确切事件。
CORBA事件服务还提供了接口,使事件提供者可以直接跟使用者进行通信。点到点事件连接遇到的问题是提供者必须了解其所有使用者,反之亦然。另外,提供者还必须处理使用者跟不上的情况。
对象交易器
交易器服务就像是各个对象的黄页,使用户可以基于对象提供的服务发现这些对象。相比之下,命名服务好像是对象的电话簿,使用户可以根据名字查找其它对象。利用这两个服务,可以在网际ORB领域找到任何一个对象。
在Object Web环境中,对象可以动态地被蜘蛛、爬虫、搜索引擎、发表-订阅服务以及所有类型的本体发现。交易器可以动态地掌握这些新对象的情况及其最新最好的服务。
一个交易器就是一个为其它对象提供“做媒”服务的对象。出口商或服务供应者向交易器极力宣传这些服务,进口商或服务使用者用交易器去发现满足其要求的各种 服务,交易器的客户需求跟服务器宣传的功能进行比较。用CORBA的术语讲,交易器将服务出口商与进口商进行匹配,交易器可以动态地发现这些服务及近期联 编到这些服务的设施。
一个新的服务供应者首先要向交易器注册其服务,然后才会给出相关的信息。
来自不同域的交易器可以创建联盟,将其服务提供集中起来。这使来自不同域的交易器可集中通告其服务,同时又维持各处对政策和服务的控制。每个交易器只能看 到那些直接相连的交易器。通常,客户与定时器对话,这个交易器通过把输入的请求传播到所有与之相连的交易器来满足这个请求-可能导致循环搜索问题。
事务处理服务和并发控制服务
事务处理服务
事务处理对建立可靠的分布式应用很很必要。OMG的对象事务处理服务OTS定义了多个IDL接口,允许多个ORB的多个对象参与基本事务-甚至出现了灾难 性故障时。OTS可选择性地支持嵌套事务。对事务和ORB间事务的支持,为处理多级客户到商业和商业到事务复杂问题奠定了基础。
对象事务处理服务OTS负责将事务处理与对象在ORB层上结合的任务。事务处理已经成为应用程序设计的原则,这些原则是分布式系统坚固耐用的保证。在 ORB环境中,一个事务必须从客户的起始点开始管理,跨越一个或多个服务器,然后回到起始客户。当一个事务结束时,所有有关的参与者就这个事务的成功与否 达成一致意见。事务成为分布式对象系统中恢复、一致性、并发的基本单位。
并发控制服务
并发控制服务使多个对象能够利用锁定来协同它们对共享资源的访问。在访问共享资源之前,对象必须从并发控制服务获得适当的锁定,每个锁定对应一个资源和一 个客户。这个服务定义了几个锁定模式,分别对应不同类别的访问和多个粒度层次。该服务补充了对象事务处理服务,使用户可以在事务边界获得或释放锁定。
并发控制服务提供了获得和释放锁定的接口,使多个客户能够协调它们对共享资源的访问。并发控制服务同时支持事务和非事务模型的操作,它可以与对象事务处理服务一起使用,协调并行事务的活动。
并发控制服务的客户有两种方法来获得锁定:
* 代表事务。此时,当事务确认或异常跟上时,事务处理服务驱动锁定的释放。通常一个事务将维持其所有锁定直到它结束。
* 代表非事务客户。此时,释放锁定是客户的责任。
并发控制服务确保事务和非事务客户串行的访问资源。至于锁定是被客户还是被非事务客户获得与服务无关。
锁定即允许客户访问某个特定资源的令牌(权杖)。并发控制服务的任务就是防止多个客户同时拥有同一资源的锁定――如果它们的活动发生冲突的话。
对象安全 性服务
安全性是一个普遍性的要求,几乎影响着分布式对象计算的每个方面。通过将安全实现移进CORBA的ORB中可以解决许多安全性总是。ORB必须管理从信任 域(在单过程或机器内)到星系际ORB间情形的一系列系统安全性。组件不需要负责加强其自身的安全性,这样就更容易开发、管理和跨环境输出。另外,将安全 性总是移进ORB可以使性能开发减至最小。
持久性和外表化
持久性服务(POS)
POS使对象能够超过创建它的应用程序或使用它的客户生命期“继续”存在下去。对象的生命期可能相对较短或不确定。POS允许对象的状态存在持久性存储器里,或者在需要时恢复出来。当对象存储在本机存储器中时,可以以本机编程语言的速度存取它的数据。
POS可以适应各种存储服务,包括SQL数据库、对象数据库管理服务、文档文件生成系统及其它存储服务。POS用IDL定义接口定义了数据和持久性对象接 口。其思想是创建一个开放式的实现,满足对象的不同持久性存储要求, 其主要思想是给多种数据存储器提供单一的对象接口。
持久性对象服务为存储对象提供了单一的接口,无论它们的持久存储机制是什么。
外表化服务
该服务使用户可以把对象的数据写进一个流,这样就能进行交换或到处,这个服务补充了持久性服务和生命期服务。
流就是受指示器约束的在一定区域内的数据。一个指示器即一个移动式指针,在将数据写入流或者从流中读取数据时,这个指针可以前后移动。数据战胜区域是在存 储器里,在磁盘上,或在整修网络中,用户不能区分其中的差别。将对象外表化给某个流,是为了将它传送到其它进程、机器或ORB。当用户需要在新的目的地恢 复对象时,就将对象内在化。
流可以复制或传送对象,可以按一个参数值传送对象。
查询和集合
查询服务
查询服务能够发现那些满足用户在查询中规定的搜索准则的对象,不会访问对象的内部状态。这意味着查询不会侵犯对象的封装,用户可以隐藏对象的内部数据结构。
可以用QQL(ODMG-93的对象查询语言)、SQL(有对象扩展)设计对象查询。用户执行一次查询时,查询服务将返回一个对象集合,这些对象满足用户通过select操作设定的搜索准则。
集合服务(Collection Service)
集合使用户能够操纵某个组里的对象。通常是将集合操作应用到组上,而不是应用到单个的对象上。集合的例子有队列、堆栈、列表、数据、树等。这些集合类型的每一种都表现出该集合专有的行为。
集合服务提供了一个创建和操纵最公用的集合的一致方式。它为这些公共集合类定义了接口定义语言,CORBA集合服务建立在Taligent公司的集合类的基础之上。它是ODMG-93的一个超类,不过用于分布式对象。
查询服务只支持最低限度的集合服务,它定义了基层的集合接口。集合服务可以为不同类型的集合将这些接口进一步分成多个子类。因此用户开始可以用这个最低限度的集合服务,在需要更多的功能时再扩展它。
对象关系与计时
关系服务
关系服务可以在互不的对象之间动态的建立关系。
分布式对象必须能够模拟其真实世界的对应物,用户应当能够在没有关系识别的对象之间动态的建立关系,并追踪这些关系。当这些对象被引入新的关系时,也应当 能够做到这一点,无需改变或重新编译这些对象。CORBA关系服务允许互不了解的组件和对象关联起来。无需改变已有的对象或者要求它们啬新的接口。即该服 务可以在不可改变的对象之间建立动态的关系。该服务还能够追踪对象之间的关系,相关对象甚至不知道它们处在某个关系之中。
计时服务
计时服务提供了用于同步分布时间的CORBA接口,还可以用于创建由时间激活的触发器。在将分布式对象系统中发生的事件排序时,维持单一的时间概念是很重 要的。那么对象请求中介如何使不同机器上的时钟保持同步呢?如何补偿同步之间的不等漂移呢?如何创造一个单系统的假象,使所有不同的机器时钟按同一时间走 动呢?显而易见的答案应是对象计时服务。
计时服务提供的接口可以:获得当前时间以及有关的误差估计;确定事件发生的顺序;基于计时器和闹钟产生基于时间的事件;计算两个事件之间的时间间隔。这些接口能够与各种各样时间同步机制共同工作。
特许和属性
对象特许服务
组件市场要以便于管理的方式发展,就必须扩展特许管理软件,将组件特许包括进去。组件在编写的时候必须自动向特许管理程序注册。该服务可以测量组件的使用,因而也应可以测量使用的费用。
特许服务可以加强很宽范围的特许选项,以满足用户的商业需要。特许服务可以收集组件的使用计量信息,这有助于判断哪些组件“无人问津”,哪些组件使用频 繁。所有的特许必须有起始、持续和失效。一些特许还可以分派给特定的用户、用户集体或组织。该服务要确定,当一个特许的组件在使用时,这个组件和特许服务 器能够持续地知道对方的存在。最后特许服务必须是一个可信的服务资源。
属性服务
属性服务能够动态的将属性和运行时的压缩包装组件关联起来,这样就可以脱离开对象管理这些属性。属性服务可以在运行时定义这些动态特性(或属性),不需要 使用接口定义语言。随后还可以将这些属性与已经存在的对象关联起来,一旦定义了这些属性,就可以给它们命名,可以读取或设置它们的值,可以设置它们的存取 模式,可以删除它们。
属性本质上是有类型、有名字的值,可以与IDL类型系统外的对象关联。
三种最基本的服务
命名、生命期和事件服务,它们是仅在对象请求代理环境内才需要的操作。 在对象初次启动时,需要找到ORB上的其它对象。CORBA命名服务就好象是各个对象的电话簿,使大家可以找到这些服务;而交易器服务好象是电话黄页,让 大家都知道对象服务,协助大家找到这些服务;生命期服务则处理关键的存在性总是,包括使用期限、消亡以及再定位,使用户可以创建对象,到处传送这些对象, 以及撤消这些对象。事件服务在匿名对象之间提供异步交互作用,当ORB上发生重要事情时用户将得到通知。
对象命名服务
此文章不是本人原创!
对象生命期服务
对象生命期服务提供了创建、复制、和删除对象的操作。生命期服务最近已被扩展,这样所有这些操作现在可以在相关对象组之间处理关联问题,这包括包含 (containment)和标记关系,也包括对象之间的参照完整性限制。依照CORBA的Bauhuas原理(保持服务的简单性和专注性),可以利用关 系服务定义这些关系。更准确的说,生命期服务提供了由关系服务派生而来的接口。
事件服务
事件服务允许对象动态地注册或注销它们所感兴趣的特定事件。一个事件(event)是在一个对象内发生的事件,而这个对象是某一个或多个对象感兴趣的。一 个通知(notification)是某个对象送到感兴趣的对象那里的消息,告知它们某个事件发生了。通常发生事件的对象不必知道感兴趣的对象。这由事件 服务来处理,事件服务在相互不是很了解的对角之间建立起一条宽松耦合的通信信道。事件的耦合远比过程调用要松,但比面向消息的中间件(MOM)要紧。
事件服务可以解耦合对象之间的通信。这个服务为对象定义了两个角色:提供者和使用者。提供者产生事件,使用者通过事件处理器处理这些事件。事件利用标准 CORBA请求在提供者和使用者之间进行通信。有事件数据传送模型:push模型和pull模型。在push模型中,事件的提供者起带头任用,发起事件的 数据传送;在pull模型中,事件的使用者起带头任用,向提供者请求事件数据。事件信道(event channel)是一个既是事件提供者又是事件使用者的插入对象,它允许多个事件提供者与多个使用者异步的通信,不需要互相了解。事件信道又是一个标准的 CORBA对象,驻留在ORB中,断开提供者和使用者之间的通信。事件信道同时支持push和pull两种事件通知模型。
一般的事件信道对象不了解它所的数据内容,它仅仅传递属于类型any的单个参数,提供者和使用者必须同意公用事件语义。但是,事件服务还支持类型化事件 (typed event)模型,允许应用程序用接口定义语言描述事件内容,传递的参数必须仅仅是输入,不返回任何消息。类型化事件同时支持push和pull两种模 型。利用IDL语言,可以定义特定事件的类型,如文档或者系统管理事件。这样使用者可以预定某个特殊事件类型,类型成了过滤事件信息的强有力工具,用户可 以追踪的确切事件。
CORBA事件服务还提供了接口,使事件提供者可以直接跟使用者进行通信。点到点事件连接遇到的问题是提供者必须了解其所有使用者,反之亦然。另外,提供者还必须处理使用者跟不上的情况。
对象交易器
交易器服务就像是各个对象的黄页,使用户可以基于对象提供的服务发现这些对象。相比之下,命名服务好像是对象的电话簿,使用户可以根据名字查找其它对象。利用这两个服务,可以在网际ORB领域找到任何一个对象。
在Object Web环境中,对象可以动态地被蜘蛛、爬虫、搜索引擎、发表-订阅服务以及所有类型的本体发现。交易器可以动态地掌握这些新对象的情况及其最新最好的服务。
一个交易器就是一个为其它对象提供“做媒”服务的对象。出口商或服务供应者向交易器极力宣传这些服务,进口商或服务使用者用交易器去发现满足其要求的各种 服务,交易器的客户需求跟服务器宣传的功能进行比较。用CORBA的术语讲,交易器将服务出口商与进口商进行匹配,交易器可以动态地发现这些服务及近期联 编到这些服务的设施。
一个新的服务供应者首先要向交易器注册其服务,然后才会给出相关的信息。
来自不同域的交易器可以创建联盟,将其服务提供集中起来。这使来自不同域的交易器可集中通告其服务,同时又维持各处对政策和服务的控制。每个交易器只能看 到那些直接相连的交易器。通常,客户与定时器对话,这个交易器通过把输入的请求传播到所有与之相连的交易器来满足这个请求-可能导致循环搜索问题。
事务处理服务和并发控制服务
事务处理服务
事务处理对建立可靠的分布式应用很很必要。OMG的对象事务处理服务OTS定义了多个IDL接口,允许多个ORB的多个对象参与基本事务-甚至出现了灾难 性故障时。OTS可选择性地支持嵌套事务。对事务和ORB间事务的支持,为处理多级客户到商业和商业到事务复杂问题奠定了基础。
对象事务处理服务OTS负责将事务处理与对象在ORB层上结合的任务。事务处理已经成为应用程序设计的原则,这些原则是分布式系统坚固耐用的保证。在 ORB环境中,一个事务必须从客户的起始点开始管理,跨越一个或多个服务器,然后回到起始客户。当一个事务结束时,所有有关的参与者就这个事务的成功与否 达成一致意见。事务成为分布式对象系统中恢复、一致性、并发的基本单位。
并发控制服务
并发控制服务使多个对象能够利用锁定来协同它们对共享资源的访问。在访问共享资源之前,对象必须从并发控制服务获得适当的锁定,每个锁定对应一个资源和一 个客户。这个服务定义了几个锁定模式,分别对应不同类别的访问和多个粒度层次。该服务补充了对象事务处理服务,使用户可以在事务边界获得或释放锁定。
并发控制服务提供了获得和释放锁定的接口,使多个客户能够协调它们对共享资源的访问。并发控制服务同时支持事务和非事务模型的操作,它可以与对象事务处理服务一起使用,协调并行事务的活动。
并发控制服务的客户有两种方法来获得锁定:
* 代表事务。此时,当事务确认或异常跟上时,事务处理服务驱动锁定的释放。通常一个事务将维持其所有锁定直到它结束。
* 代表非事务客户。此时,释放锁定是客户的责任。
并发控制服务确保事务和非事务客户串行的访问资源。至于锁定是被客户还是被非事务客户获得与服务无关。
锁定即允许客户访问某个特定资源的令牌(权杖)。并发控制服务的任务就是防止多个客户同时拥有同一资源的锁定――如果它们的活动发生冲突的话。
安全性是一个普遍性的要求,几乎影响着分布式对象计算的每个方面。通过将安全实现移进CORBA的ORB中可以解决许多安全性总是。ORB必须管理从信任 域(在单过程或机器内)到星系际ORB间情形的一系列系统安全性。组件不需要负责加强其自身的安全性,这样就更容易开发、管理和跨环境输出。另外,将安全 性总是移进ORB可以使性能开发减至最小。
持久性和外表化
持久性服务(POS)
POS使对象能够超过创建它的应用程序或使用它的客户生命期“继续”存在下去。对象的生命期可能相对较短或不确定。POS允许对象的状态存在持久性存储器里,或者在需要时恢复出来。当对象存储在本机存储器中时,可以以本机编程语言的速度存取它的数据。
POS可以适应各种存储服务,包括SQL数据库、对象数据库管理服务、文档文件生成系统及其它存储服务。POS用IDL定义接口定义了数据和持久性对象接 口。其思想是创建一个开放式的实现,满足对象的不同持久性存储要求, 其主要思想是给多种数据存储器提供单一的对象接口。
持久性对象服务为存储对象提供了单一的接口,无论它们的持久存储机制是什么。
外表化服务
该服务使用户可以把对象的数据写进一个流,这样就能进行交换或到处,这个服务补充了持久性服务和生命期服务。
流就是受指示器约束的在一定区域内的数据。一个指示器即一个移动式指针,在将数据写入流或者从流中读取数据时,这个指针可以前后移动。数据战胜区域是在存 储器里,在磁盘上,或在整修网络中,用户不能区分其中的差别。将对象外表化给某个流,是为了将它传送到其它进程、机器或ORB。当用户需要在新的目的地恢 复对象时,就将对象内在化。
流可以复制或传送对象,可以按一个参数值传送对象。
查询和集合
查询服务
查询服务能够发现那些满足用户在查询中规定的搜索准则的对象,不会访问对象的内部状态。这意味着查询不会侵犯对象的封装,用户可以隐藏对象的内部数据结构。
可以用QQL(ODMG-93的对象查询语言)、SQL(有对象扩展)设计对象查询。用户执行一次查询时,查询服务将返回一个对象集合,这些对象满足用户通过select操作设定的搜索准则。
集合服务(Collection Service)
集合使用户能够操纵某个组里的对象。通常是将集合操作应用到组上,而不是应用到单个的对象上。集合的例子有队列、堆栈、列表、数据、树等。这些集合类型的每一种都表现出该集合专有的行为。
集合服务提供了一个创建和操纵最公用的集合的一致方式。它为这些公共集合类定义了接口定义语言,CORBA集合服务建立在Taligent公司的集合类的基础之上。它是ODMG-93的一个超类,不过用于分布式对象。
查询服务只支持最低限度的集合服务,它定义了基层的集合接口。集合服务可以为不同类型的集合将这些接口进一步分成多个子类。因此用户开始可以用这个最低限度的集合服务,在需要更多的功能时再扩展它。
对象关系与计时
关系服务
关系服务可以在互不的对象之间动态的建立关系。
分布式对象必须能够模拟其真实世界的对应物,用户应当能够在没有关系识别的对象之间动态的建立关系,并追踪这些关系。当这些对象被引入新的关系时,也应当 能够做到这一点,无需改变或重新编译这些对象。CORBA关系服务允许互不了解的组件和对象关联起来。无需改变已有的对象或者要求它们啬新的接口。即该服 务可以在不可改变的对象之间建立动态的关系。该服务还能够追踪对象之间的关系,相关对象甚至不知道它们处在某个关系之中。
计时服务
计时服务提供了用于同步分布时间的CORBA接口,还可以用于创建由时间激活的触发器。在将分布式对象系统中发生的事件排序时,维持单一的时间概念是很重 要的。那么对象请求中介如何使不同机器上的时钟保持同步呢?如何补偿同步之间的不等漂移呢?如何创造一个单系统的假象,使所有不同的机器时钟按同一时间走 动呢?显而易见的答案应是对象计时服务。
计时服务提供的接口可以:获得当前时间以及有关的误差估计;确定事件发生的顺序;基于计时器和闹钟产生基于时间的事件;计算两个事件之间的时间间隔。这些接口能够与各种各样时间同步机制共同工作。
特许和属性
对象特许服务
组件市场要以便于管理的方式发展,就必须扩展特许管理软件,将组件特许包括进去。组件在编写的时候必须自动向特许管理程序注册。该服务可以测量组件的使用,因而也应可以测量使用的费用。
特许服务可以加强很宽范围的特许选项,以满足用户的商业需要。特许服务可以收集组件的使用计量信息,这有助于判断哪些组件“无人问津”,哪些组件使用频 繁。所有的特许必须有起始、持续和失效。一些特许还可以分派给特定的用户、用户集体或组织。该服务要确定,当一个特许的组件在使用时,这个组件和特许服务 器能够持续地知道对方的存在。最后特许服务必须是一个可信的服务资源。
属性服务
属性服务能够动态的将属性和运行时的压缩包装组件关联起来,这样就可以脱离开对象管理这些属性。属性服务可以在运行时定义这些动态特性(或属性),不需要 使用接口定义语言。随后还可以将这些属性与已经存在的对象关联起来,一旦定义了这些属性,就可以给它们命名,可以读取或设置它们的值,可以设置它们的存取 模式,可以删除它们。
属性本质上是有类型、有名字的值,可以与IDL类型系统外的对象关联。