网络应用日益复杂,开发人员在构造分布应用的时候常常会遇到一些共性的问题。通信底层涉及的问题有分布对象的访问、请求协议、字节顺序转换、数据类型转换、异步请求、并发控制等。应用高层面临的问题有事务、安全、实时、可用性、可扩展性、可靠性等等。这些问题曾经在一定的时期内极大的困扰着应用的开发人员,使他们不能专注于应用业务逻辑的开发。为了简化分布系统的构造,需要提取出上述共性的问题加以解决,并为应用提供一套完整的运行和开发平台,这就产生了分布计算中间件技术。中间件是指网络环境下位于操作系统等系统软件和应用软件之间的一种连接分布计算实体的分布式软件,它通过提供简单、一致和集成的分布应用开发运行环境,简化了分布应用的设计和编码。典型分布计算中间件有OMG组织的CORBACORBA和其接口定义语言IDL以语言无关、透明性、互操作性和可移植性著称。从本质上讲,CORBA抽象了底层异构的分布计算环境,这些环境包括网络、主机、操作系统平台和编程语言。它主要解决了网络通信的复杂性和分布应用运行环境的异构性问题,为互连、互通和互操作提供了透明的视图。同时OMG组织在CORBA上定义了COSS(Common Object Services Specifications)标准。COSS标准抽象了许多开发应用时的高层需求,提供了一套常用的服务,诸如事务服务、通告服务、名字服务和生命周期管理服务等。用户可以在使用CORBA开发应用的时候通过编程使用这套服务,简化开发应用的难度和提高开发应用的效率和质量。
1.1.1.1  分布构件技术
然而随着网络计算的进一步发展,应用变得越来越复杂。开发者们已经不满足传统中间件技术带来的快速开发分布应用的优势。他们要求中间件能够对运行的分布系统提供较好的管理支持,要求尽可能少的编写代码就可以使用中间件提供的管理功能和基础服务。此外,开发者们不仅仅要求能复用底层的通信技术和较高层的服务,而且要求中间件在一定程度上满足业务逻辑对象代码的复用。在这种需求下产生了以分布构件技术为核心的应用服务器技术。
分布构件技术为分布应用提供了基础设施的无缝集成,通过构件的组装为分布应用提供了构件二进制代码的复用和快速开发能力。这些优势使得分布构件技术在上个世纪末和这个世纪初得到了广泛的应用。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><?xml:namespace prefix = w ns = "urn:schemas-microsoft-com:office:word" />
1.1 分布构件技术在三个维上的发展
1.1所示,目前分布构件技术向三个正交的维度上发展[7]
Tiers维度上,通过建立多层(tiers)系统,使业务表现,业务逻辑和数据存储分离开来。分布应用的多层发展改善了应用的性能,提高了数据的安全性,   增强了服务器的可伸缩性。
在技术体系结构的维度上,分布构件技术正在向更高的层次上发展。出现了面向领域的体系结构,它负责管理分布的应用服务器,根据行业的知识为分布应用提供更多的领域支持。
QoS维度上,分布构件技术的好坏还取决于它能否满足用户服务质量的要求。用户需要作为分布构件宿主的应用服务器在服务质量上达到一定的性能要求和安全要求。还有可能需要应用服务器为用户提供故障诊断支持。应用服务器对QoS功能支持的多少是用户在选择应用服务器时不可忽略的因素。也是一个应用服务器能够在众多的系统中脱颖而出的关键。分布构件应用服务器平台QoS的研究已经成为分布计算技术研究的一个重要方向。
已有的分布构件平台为用户带来许多实际的利益,这些利益包括:
1)        系统分析员能够通过构件更加直观的为应用建立业务模型。
2)        业务流程的开发人员直接使用已有的基础设施,而不必将精力花费在与业务流程关系不大而又十分难于编写的公共设施上。对这些基础设施的使用是通过配置策略实现的,不需要编写代码来实现。这些都减少了应用的开发投资,加快了开发速度。
3)        通过构件的组装来建造应用。构件可以是用户编写的,也可以是第三方提供的。
4)        已有的构件通过不同的组合可以形成逻辑不同的应用,构件代码在二进制级可以复用,节省了投资。
分布构件技术近年来获得了较大的进步。不仅在商业上有了较大的成功,而且在学术界也引起了较高的关注。随着网络应用需求的不断扩展,应用的运行环境和应用本身都对中间件提出了更高的要求。在这种需求下,具有构件特性的新型中间件系统对我们提出了挑战。它导致了基于构件技术的中间系统在发展方向上呈现新的发展趋势。这些趋势表现在:
n        更广范围的松散耦合
Internet的巨大成功是20世纪最伟大的技术进步它的普及和发展提供了一种全新的分布式应用环境。这种异构和开放的环境对互操作提出了新的要求。这种环境下,许多企业在其组织内部已经采用了某种中间件技术,企业内部的互操作已经建立起来。而在Internet更广范围互连和互通的建立还存在一些困难。现有的中间件虽然实现了企业之间的互操作,但是它们采用的通信协议耦合度太紧,如IIOP协议和JRMP等。这些协议考虑了太多的硬件体系结构信息,不利于企业间的信息集成。为了在开放式的Internet环境下提供更广泛松散耦合下的互操作,产生了以XML为基础的Web Services技术。Web Services忽略了具体的传输协议,定义了以XML文档为基础的消息传输格式。在实现上,Web Services解耦合了服务的各个层面,在不同层次上对服务的各种特征进行了定义。它还增强了服务的动态发布和发现能力。Web Services致力于互操作问题,而不关心中间件具体的体系结构。也就是说,它在屏蔽了异构的硬件平台、操作系统和编程语言的基础上,还屏蔽了中间件体系结构的特征。Web Services为更广范围的分布应用集成提供了切实可行的方案。然而,Web Services作为一种新兴的中间件技术还非常不成熟。例如WSDL的精确语义问题、语言映射问题、服务的状态管理问题、事务、安全和可用性等一系列问题,它都没有给出一个好的解决方案。因此,解决实际问题的时候这种新兴的技术显得力不从心,其中还有很多问题值得研究和探讨。

n        支持QoS
应用需求的不断扩大不仅要求分布构件应用服务器能够提供基本的通信任务和通过配置方式使用已有的基础设施。同时在服务质量上对应用服务器提出了要求。比如要求在应用服务器上可以运行实时构件,构件具有相应的实时要求。应用服务器能够管理失效的构件,能够在发生故障时对运行在其上的构件进行诊断,必要的时候进行容错和恢复。还要求应用的消息能够可靠的传输,或者满足一定的传输要求。

n        支持自主计算
尽管分布构件技术的发展使得应用的开发变得越来越容易,但是实际应用却日益复杂。目前,应用服务器对分布构件运行时的管理支持力度不能完全满足实际应用的要求。这种不平衡的发展趋势对分布计算中间件提出了自主计算的要求。所谓自主计算,就是系统通过某种智能认识自身的状态和行为,并作出相应的判断。这种判断可以为系统管理员提供某种决策支持,或者直接用于系统管理。
n        支持嵌入式移动应用
大多数移动设备都需要嵌入式分布计算环境,因此要求分布构件技术为嵌入式环境应用的开发和管理提供更好的支持。这些应用要求分布构件的运行不仅互操作性好,而且要求执行高效、自适应性强、动态特性好、位置不敏感。许多研究者正致力于研究符合嵌入式移动设备的新型分布构件中间件。移动计算要求中间件支持位置无关的服务动态发现和事件订阅发布等特性。
n        支持反射机制
反射指程序可以访问、检测和修改自身状态的一种能力。反射概念的提出引发了计算机科学关于反射的研究,这项概念首先被引入到程序语言的领域,如OpenC++MetaXaOpenJava等。现在,这项技术已经应用到操作系统、文件系统和中间件领域。传统的中间件抽象出分布系统的共性问题并封装了相关的支撑机制,允许上层应用以“黑盒”方式复用这些功能。CCM应用服务器中要求被连接的各个构件之间对于内部实现不感知,从而屏蔽异构问题达到更大程度上的复用。但是Internet的发展促使应用环境从封闭、静态转变为开放、动态,这就要求系统软件具有足够的灵活性以适应开放、动态的运行环境。开放中间件平台和分布构件的细节、允许应用以“白盒”方式复用和访问自身,这是一种满足应用灵活性的有效途径。例如,法国Ѐcole des Mines de Nantes大学采用反射式语言NeoClasstalk实现了反射式CORBA OpenCorba[8],华盛顿大学在TAO的基础上研制了一种反射式CORBA中间件dynamic TAO[9]
1.1.1.2  CCM
分布构件技术以降低中间件平台使用的复杂性,支持分布式企业应用和代码的二进制重用为目标,成为了中间件技术当前的主要发展方向。19976月,CORBA平台上的构件模型CCM,被正式提交到OMG组织的研究日程,OMG组织发布了关于CCMRFP(Requests for Proposal) 19997月,OMG组织发布CCM规范草案。从1999年到2002年,CCM案经过多次研究和修改。最终于20026月通过投票,OMG组织发布了CCM分布构件模型的第一个正式版本。目前CCM规范已经成为CORBA 3.0[1]标准的重要组成部分。
CCM构件模型建立在分布计算环境的基础上,它将分布应用的业务逻辑封装在构件之中,构件可以在一个分布的CCM管理域中部署,通过配置和组装将多个相关的构件连接起来,构成更大的应用。分布构件运行在容器之中,容器为分布构件提供一个运行和管理平台。容器集成了常用的基础设施,如事务服务、通告服务和访问控制服务,通过截获构件的分布请求作出相应的处理。构件通过声明需要提供的服务类型和服务策略来请求容器为其提供一定的服务支持。通过截获技术实现的服务集成技术在一定程度上简化了应用开发的难度,提高了应用的可管理性。表现在以下几个方面:
(1)应用使用服务的方式由编程变为声明策略和配置。
(2)容器的存在为应用的管理提供了良好的支持。
(3)应用的构造从原来的开发过程变为有选择性的组装过程。对于可复用的构件,开发人员直接取来,将它和接口兼容的构件组装形成新的应用,不需要编写多余的代码。