当前位置:文档之家› 004017软件中间件技术现状及发展

004017软件中间件技术现状及发展

封面报道

软件中间件技术现状及发展

关键词:中间件技术

如何理解中间件

“中间件”这个术语最早出现在20世纪80年代中期,主要用于描述网络连接管理软件。进入20世纪90年代后,随着网络技术快速发展,中间件的概念日益普及。由于学术界的研究与探索以及产业界的推广与实践,中间件已经成为网络时代最主要、也是最活跃的软件形态之一。在我国,中间件研发也已有十余年的历史。令人兴奋的是,我国中间件研发成果在国家信息化进程中正在发挥越来越重要的作用,中间件为中国软件产业的发展提供了新机遇。

尽管目前尚没有统一的中间件定义,但对于中间件的意义与内涵已有基本共识。一般说来,中间件有两层含义。从狭义的角度,中间件意指网络环境下处于操作系统等系统软件和应用软件之间的一种起连接作用的支撑软件,可使得网络环境下的应用方便地交互和协同。从广义的角度,中间件在某种意义上可以理解为中间层软件,通常是指处于系统软件和应用软件之间的中间层次的软件,其主要目的是对分布式应用软件的开发、部署和运行提供更为直接和有效的支撑。

我们可以从软件的形态、作用、开发和市场等不同的角度深入地审视中间件。

从软件形态看中间件

软件是客观世界中问题空间与解空间的具体描述,其基本模型为实体元素以及这些元素之间的连接和交互。考察软件基本模型的发展,汇编语言(机器语言)的基本单元是指令,指令的序列构成程序,其控制机制主要是顺序和转移;高级语言则通过顺序、循环和条件等三种基本控制结构来控制高级语句,而函数(过程)等程序元素增大了实体元素的粒度;近20年来,面向对象程序设计语言的诞生与逐步流行,为人们提供了一种以对象为基本计算单元、以消息传递为基本交互手段的软件模型,该模型以拟人化的观点来看待客观世界(客观世界由一系列对象构成,这些对象间的交互就形成了客观世界的活动),符合人们的思维模式和现实世界的结构;对软件复用的关注,又使得人们试图寻找比对象粒度更大、更易于复用的基本单元,因而面向构件的计算模型被视为新一代的软件模型。

网络的出现与普及,使得编程语言提供的基本通信机制无法支持软件模块之间的远程交互,由此导致了中间件的产生。此外,软件自身的日益复杂导致软件模块之间的交互也变得复杂,为此,中间件不得不提供越来越多的功能以屏蔽交互的复杂度,如异步通信、组通信、并发、安全、事务等复杂功能成为中间件必备的高级特征,而Web服务更是考虑到了交互之间的时序约束以及多个模块交互之间的全局约束。因此,从软件形态的角度看,中间件主要解决软件模块之间的交互问题。

梅 宏 王怀民

北京大学

从软件作用看中间件

在整个信息技术体系中,微电子是基础,计算机和通信设施是载体,软件则是核心。如何更高效地发挥硬件资源所提供的计算能力,是软件技术发展的主要驱动因素之一。以操作系统为例,随着计算机硬件的发展,单机操作系统从最初的引导程序,发展到管理诸多硬件资源的管理程序,进而产生发挥CPU与外设作用的多道程序,直至今日追求软硬件高效利用的资源管理系统。

随着通信设施的发展,高效、经济地发挥网络互联的、种类繁杂的、数量众多的硬件资源计算能力的需求,导致了中间件的产生。除了经典的远程通信问题外,越来越多的与硬件相关的问题及其解决方案也开始在中间件中得以体现,例如:实时中间件(realtime middleware)重点考虑现实世界严格的时间约束问题;嵌入式中间件(embedded middleware)着重解决嵌入式设备计算能力较弱、存储空间较小、网络带宽有限、电源供应不足等问题;而移动计算中间件(m o b i l e middleware)则提供位置敏感、断连操作等支持。因此,从软件作用的角度看,中间件也可视为“网络操作系统”。

从软件开发看中间件

软件开发是典型的知识密集型活动,复杂度高、开发周期长、可靠性难以保证。尽可能多地凝炼共性并复用,是提高软件开发效率和质量的主要途径。从共性凝炼的角度看,操作系统将管理硬件资源、控制程序运行等直接作用于裸机的共性问题提取出来,简化应用对计算机的管理和使用;而中间件则将网络环境下应用开发经常遇见的共性问题,如通信、安全、事务等,以及某些特定领域的问题,如电信中的事件过滤与通告、音频视频传输、运输领域的空中交通管制、制造领域的计算机辅助设计、生命科学领域的基因表达等抽取出来,从而大大地简化了网络应用的开发和维护。

随着可复用共性的增多,软件开发也逐步 从手工作坊式向软件工业化生产演变。典型的工业化软件生产技术包括终端用户编程、模型驱动开发和随需即取等。终端用户编程允许用户在无需掌握复杂的编程语言和过多的技术细节的条件下,快速开发出满足需求的软件。在模型驱动开发中,用户只需关注高层建模,复用包含复杂技术细节的低层模型,即可自动生成代码。随需即取则根据用户需求,由服务提供商快速正确地构造出相应服务。在这些工业化软件生产技术中,中间件都扮演了极为重要的“基础设施”的角色。因此,从软件开发的角度看,中间件是一种高效实用的共性凝炼与复用手段。

从软件市场看中间件

市场竞争、技术升级以及保护投资等因素往往导致软硬件的异构,而市场合作以及系统升级又要求解决异构问题。回顾软件技术的发展,操作系统在某种程度上,屏蔽了计算机硬件的异构性;为了屏蔽操作系统和编程语言的异构性,产生了支撑软件和中间件。中间件的发展和多样化导致了中间件的异构性,由此产生了Web服务。另一方面,从产品为中心转向服务为中心的“软件即服务”以及“业务按需即取”等新型市场模式,均依赖于中间件技术的支撑。

从软件产业的角度,中间件技术和产品的采用,可有效地缩短应用解决方案进入市场的时间,提高解决方案的竞争力,大量地开发与使用中间件,可有效地提高软件企业的产品质量和生产效率。从技术的角度而言,中间件技术和产品包含了互联网平台的抽象、开放应用模式和结构的理解、基础的程序设计模型、新型软件方法学等多项软件核心技术,是互联网环境下众多软件新方法和新技术的综合载体。

封面报道

从产品角度而言,中间件是处在经典系统软件和应用系统之间的一组软件,它们不仅可在多种主流平台上运行、对现行的主流软件技术和产品具有良好的兼容性,还能够适应互联网的多样性特征、开放性应用的多样性特征和多种用户的个性化需求。因此,从软件市场的角度看,中间件使得各种软硬件技术与产品能够适应各种市场模式或策略。

从软件形态、软件作用、软件开发、软件市场等四个角度考察,尽管难以保证其结果的完备性,但确实揭示了中间件发展驱动力的重要内容。

中间件的发展现状

中间件的基本功能

中间件的主旨是简化分布系统的构造,其基本思想是:抽取分布系统构造中的共性问题,封装这些共性问题的解决机制,对外提供简单统一的接口,从而减少开发人员在解决这些共性问题时的难度和工作量。在构造分布系统的过程中,开发人员经常会遇到网络通信、同步、激活/去活、并发、可靠性、事务性、容错性、安全性、伸缩性、异构性等问题。中间件一般提供如下功能:

通信支持

大多数基于中间件的系统包含有分布式操作,也就是说,系统需要与其他分布式服务或系统进行交互。现代操作系统一般提供一组网络操作的编程接口(如套接字),中间件则提供高层通信支持以屏蔽底层、复杂的接口。早期基于中间件的应用中,分布式交互主要包括远程过程调用(Remote Procedure Call,RPC)和消息两种方式。

远程过程调用允许一个应用程序(称为客户端)调用另外一个应用程序(称为服务器)提供的服务,而在客户端源程序中的写法与普通的过程调用相同。远程过程可以与客户端运行在同一台计算机上,也可以运行在通过网络连接的其他计算机上。因此,提供远程过程调用的支持,事实上需要中间件负责使用操作系统提供的底层编程接口,完成调用数据传输、过程绑定和结果数据传输等底层的、复杂和容易出错的网络编程工作,为上层系统只提供非常简单的编程接口或过程调用模型。

与远程过程调用固有的同步方式不同,消息提供异步交互的机制。一类应用(称为消息的生产者)只在将产生的消息放入某个消息队列或主题中之后,并不等待反馈,而是继续执行下去;而另一类应用(称为消息的消费者)则得到通知并从消息队列或主题中取出消息进行处理。

并发支持

分布式应用系统一般需要具有较强的处理能力,也就是说,系统可以处理很多的客户请求。为尽量利用硬件的计算能力,一般系统的实现往往采用并发技术(如多进程或多线程),对多个客户请求同时进行处理。但并发技术的使用是一个复杂而且容易出错的过程:并发执行的程序单元之间可能会互相影响、竞争资源,也可能会产生系统内部状态的不一致。因此,应用程序使用并发技术后,其自身复杂度会有很大提高。

中间件为应用系统提供并发支持,是指提供一种“单线程”或“单进程”的编程模型,开发者在开发系统时,无需考虑并发对程序的影响,可以假设程序是串行执行的,从而极大地简化了程序开发和维护的复杂度,也减少了程序出错的可能性。

公共服务

公共服务是对应用中共性功能或约束的抽取。中间件提供一个或一组公共服务,供系统使用,这组公共服务针对某一种或某一类系统;应用系统在实现和运行时直接使用这些公共服务。公共服务的好处在于:一方面将应用

中的共性抽取出来由中间件实现,减少了系统开发的工作量;另一方面使得应用开发者更能关注业务功能的需求、设计和实现,有助于提高软件质量。

不同中间件中提供的公共服务有可能存在差别,其中主要的公共服务包括:名字和目录服务,

提供动态的网络资源定位查找功能,应用系统可以在运行时刻按照名字或目录查找需要使用或进行交互的其他系统或系统组成部分。事务服务,提供对应用操作事务性的保证,包括声明型的自动完成事务的启动、提交或回滚,和编程型的事务接口(由应用程序控制事务流程)。另外,很多中间件还提供分布式的事务支持。安全服务,从通信、访问控制等多个层次上保证应用系统的安全特性。持久化服务,提供一种管理机制,应用系统可以管理其持久化的数据。例如,在基于面向对象方法设计和实现的系统中完成“对象——关系”映射,将对象存储到关系型数据库中。

中间件的主流技术与产品

随着分布式应用的快速发展,各种中间件技术和产品不断涌现。同时,由于中间件技术和产品正在快速的发展,目前还难以精确地给出完整的中间件分类。因此下文主要介绍一些典型的中间件技术和产品。

事务式中间件(T r a n s a c t i o n a l Middleware)

事务式中间件又称事务处理管理程序(Transaction Processing Monitor)。其主要功能是提供联机事务处理所需要的通信、并发访问控制、事务控制、资源管理、安全管理和其他必要的服务。

事务式中间件由于其可靠性高、性能优越等特点而得到了广泛的应用,是一类比较成熟的中间件,其主要产品包括IBM的CICS、BEA 的Tuxedo和Transarc的Encina等。

过程式中间件(P r o c e d u r a l Middleware)

过程式中间件又称远程过程调用(Remote Procedure Call,RPC)中间件。远程过程调用模型是经典的过程调用思想在网络环境下的自然拓广。过程式中间件可以在网络环境下,用过程调用的方式,使得一个主机上的应用可以调用部署在另一个主机上的应用中的过程。

一般说来,过程式中间件有较好的异构支持能力,简单易用,但在易剪裁性和容错方面有一定的局限性。过程式中间件是一项比较经典的技术,其主要产品有开放软件基金(Open Software Foundation)的DCE,微软的RPC Facility等。

面向消息的中间件(M e s s a g e-Oriented Middleware)

面向消息的中间件,简称为消息中间件,是一类以消息为载体进行通信的中间件。按其通信模型的不同,消息中间件的通信模型有两类:消息队列和消息传递。消息队列是一种基于队列来完成的间接通信模型。而消息传递是一种直接通信模型,其消息被直接发给感兴趣的实体。近年来,对消息中间件技术有较大影响的是J2EE规范中的JMS。

消息中间件在支持多通信规程、可靠性、易用性和容错能力等方面有其特点,比较易于使用。面向消息中间件是一类常用的中间件,其主要产品有IBM的MQSeries、微软的Messaging Queuing,以及升阳(Sun)的Java Message Queue等。

面向对象中间件(Object-Oriented Middleware)

面向对象中间件又称分布对象中间件(Distributed Object Middleware),简称对象中间件。分布对象模型是面向对象模型在分布异构环境下的自然拓广。分布对象中间件支持分布对象模型,使得软件开发者可在分布异构环境下采用面向对象方法和技术来开发应用。

封面报道

1 Enterprise Application Integration,企业应用集成2

Business to Business,企业对企业的电子商务模式

OMG组织是分布对象技术标准化方面的国际组织,它制定出了CORBA等标准;DCOM是微软推出的分布对象技术,COM+和.NET是其进一步的发展与深化;Java/RMI是升阳提出的以Java语言为核心的分布对象技术。

总的说来,对象中间件是一种标准化较好、功能较强的中间件;它全面支持面向对象模型,具有良好的异构支持能力,具有广泛适用性的一类应用。分布对象中间件是一类常用的中间件,其主要产品有OMG的CORBA产品系列、微软的COM系列、Java RMI 等。

Web应用服务器(Web Application Server)

概念上,Web应用服务器是Web服务器和应用服务器相结合的产物,它是处于目前主流的三层或多层应用结构中间的核心层次,直接与应用逻辑关联,对分布应用系统的建造具有举足轻重的影响。应用服务器中间件技术是为支持开发应用服务器而发展起来的软件基础设施,它不仅支持前端客户与后端数据和应用资源的通信与连接,而且还采用面向对象、构件化等先进技术等提供了事务处理、可靠性和易剪裁性等多方面的支持,大大简化了网络应用系统的部署与开发。J2EE架构是目前应用服务器方面的主流标准。

由于直接支持三层或多层应用系统的开发,应用服务器受到了广大用户的欢迎,是目前中间件市场上竞争的热点,其主要产品有BEA的Web Logic(遵循J2EE规范)和IBM的WebSphere等。

Web服务中间件(Web Services Middleware)

为了支持跨边界的企业应用系统间的集成,出现了W e b 服务及其相关标准。一般说来,W e b 服务中间件就是指支持

UDDI(Universal Description, Discovery, and Integration)、XML (eXtensible Makeup Language)、SOAP(Simple Object Access Protocol)、WSDL(Web Services Description Language)和WSFL(Web Services Flow Language)等各种相关标准的中间件。对于那些在不同类型中间件环境中开发的应用系统,此类中间件可支持它们在统一模式下进行灵活的应用集成和互操作。

W e b服务近年来发展起来的新兴技术,有较好的市场发展前景。与之相关的主要工作有微软的.N E T、升阳的S u n O n e、甲骨文(Oracle)的Oracle9i等,以及BEA、惠普和宝来(Borland)等。

其他

新的应用需求、新的技术创新、新的应用领域促成了新的中间件产品的出现。例如,商务流程自动化的需求推动了工作流中间件的兴起;企业应用集成的需求引发了企业应用集成服务器(EAI 1服务器)的出现;动态B2B 2集成的需要又推动了Web服务技术和产品的快速发展,Web服务技术的发展又必将推动现有中间件技术的变化和新中间件种类的出现;中间件应用到通信环境,服务于移动电子商务,就出现了移动中间件;而对中间件在开放环境下的灵活性和自适应能力的需求导致了所谓自适应中间件、反射式中间件和基于主体(Agent)的中间件等新型中间件的研究。

中间件的国内外市场

2003年,全球中间件软件市场成长迅速,总营业额约为70亿美元,比上年增长27%,中间件软件正在成为全球软件行业新的技术与经济增长点。2003年,美国市场的中间件产品销售额达到48亿美元,占全球中间件市场总销售

3

Java Authentication Authorization Service,Java认证和授权服务

额的68.6%,是名副其实的中间件生产和应用大国。据 统计,2003年,中国中间件软件市场规模超过10亿元,2004年到达12.74亿元,2005年预计可超过16.7亿元。中国的中间件软件应用主要集中在邮电、金融、电子政务与政府、能源和交通等领域。

鉴于中间件软件的重要性,国际上主要的计算机系统公司纷纷推出自己的中间件软件平台战略计划和应用解决方案,呈现群雄争霸的局面。1999年10月,升阳公司开始免费提供办公软件StarOffice及其Web浏览器版StarPortal,宣布开放S o l a r i s操作系统的源代码,并发起了网络计算联盟,推出SunOne计划和开发平台。IBM公司在提出面向网络应用的“旧金山计划”后,为继续发挥其在互联网上的影响,领头开展了Web服务的战略计划。甲骨文公司积极扩展ASP服务,并制定推出了以Oracle 10i 为中心的网络软件平台发展计划。作为中间件的独立厂商BEA,推出了系列化的中间件产品WebLogic等,作为新一代基于Java的Web应用服务器,在提供传统的应用服务器功能的同时,针对当今的互联网技术和Java技术的需要提供了功能丰富的支持机制。2000年6月,微软公司推出https://www.doczj.com/doc/ce10006572.html,计划并大力宣传,以其作为微软公司走向互联网的全盘规划。

就我国的情况而言,早在“九五”期间,国家863高技术计划就开始关注中间件技术与产品的研究与开发,并进行了相应的部署。基本掌握了CORBA中间件和消息中间件等中间件的主流技术,开发出“分布计算软件平台StarBus”和“网络通信中间件ISMQ”等通用中间件产品。随着863高技术计划“十五”期间研发工作的深入,我国在中间件技术和产品方面的水平有了进一步的提升,取得一批研究、开发和应用成果。主要技术产品包括“基于CORBA技术的中间件软件产品(STAR)系

列”、“基于消息中间件的中间件产品网驰(ONCE)系列”、“基于Web服务技术的中间件产品SABASE系列”和“基于J2EE的中间件产品PKUAS”等,在中间件的关键技术、推广应用、国际标准介入等方面取得突破性的进展,推动了我国中间件产业的发展。

中创软件在863高技术计划的支持下,基于863核心技术推出了一系列的中间件产品,主要有InfoBus、InfoWeb、InfoEAI和InfoFlow 等,成为中间件产业的一支新军。东方通科技继在原有中间件产品基础上,于2003年6月推出新产品TongIntegrator企业应用集成平台,该产品能够为需要数据集成的应用提供数据流服务和应用集成框架,具有支持不同地域系统集成的功能,并支持多种数据格式,还能提供强有力的数据加工处理,实现系统的互联互通。金蝶于2003年11月发布了其中间件产品的新版本Apusic应用服务器3.0,该产品增加了支持JAAS 3、支持Kerberos用户认证、完整实现RMI/IIOP、支持Web服务等更多的新特性;同时,新版本在安全性、性价比、中文支持、本地化、服务响应等方面具有一定优势。

中间件的发展趋势

近年来,中间件技术取得了很大的成功,不仅成为产业界开发分布系统的首选,也吸引了学术界的众多研究。如图 1所示,随着应用的普及和研究的深入,以及互联网的发展,目前的中间件技术主要呈现出三方面的趋势:

首先,中间件越来越多地向传统运行层(操作系统)渗透;其次,应用软件需要的支持机制越来越多地由中间件提供;其三,中间件也开始考虑对高层设计和应用部署等开发工作的支持。

具体而言,以下中间件研究热点值得关注:

封面报道

支持基于构件的软件开发

基于构件的软件复用方法经过多年的研究与实践,得到了广泛的认可。中间件技术更是在实现层次直接支持构件的部署和运行。由于面向对象技术具有对构件的自然支持,因此,对象中间件正在或已经发展成为构件中间件。

为了推动基于Java的服务器端应用开发,升阳公司在1999年底推出了Java 2技术及相关的J2EE规范[46]。J2EE的目标是:提供平台无关、可移植、支持并发访问和安全、完全基于Java的服务器端中间件标准。在J2EE中,升阳给出了基于Java语言开发面向企业分布应用的完整规范。其中,在分布互操作协议方面,J2EE同时支持JRMP和IIOP;而在服务器端分布式应用构造方面,则包括了Java Servlet、JSP (Java Server Page)、EJB(Enterprise JavaBean)等多种构件形式。针对不同的业务需求,EJB 定义了四种构件类型,即无态会话构件、有态会话构件、实体构件和消息驱动构件;为了提高服务器端的运行效率,EJB将接口划分为远程接口和本地接口,远程接口通过RMI-IIOP 调用,而本地接口则直接通过Java语言调用机制;为了解决构件与后台数据库的关联问题,EJB不仅通过实体构件封装后台数据,还提供了特殊的查询语言支持用户对构件进行复杂的关系型操作,换言之,EJB通过实体构件及其之间的关系屏蔽了后台数据库的异构性和复杂性;EJB还定义了作用于构件的事务和安全机制[45]。由于其完整的实现模型和开发模型,EJB是目前采用构件技术开发系统的首选。

C O R B A是分布异构系统互操作的工业标准。CORBA 3.0规范增加了面向互联网的特性、服务质量控制和C O R B A构件模型。CORBA构件模型(CORBA Component Model,CCM)在CORBA的POA和对象服务的基础上发展而来,定义了构件模型与元模型、容器结构、编程模型、构件定制与部署等基本概念与关键技术[31],并兼顾了与EJB规范的兼容。CCM规范草案自1999年2月发布至今,出现了若干参考实现,成为展现构件新技术的环境,但与J2EE平台比较,CCM比较复杂,还没有形成广泛应用的商用产品。

C O M最初的设计原则之一就是支持构件技术,初期主要面向桌面应用环境,之后,根据分布式应用的需求,发展出了Distributed COM (DCOM)、COM+、Microsoft Message Queuing(MSMQ)、Microsoft Transaction Server (MTS)、ActiveX Controls等相关技术[28]。由于微软的技术背景,C O M技术得到了底层操作系统和开发工具的强大支持,其易用性优

图1 中间件发展趋势示意图

于前两种面向对象中间件。但也正因为依赖Windows,COM在其他操作系统平台如Unix和Linux上无法发挥作用。

支持互联网应用与Web服务

在局域网取得了巨大成功的同时,中间件在互联网环境中暴露出了许多弊端,如运行态的网络地址、二进制消息编码等等,学习和应用传播的成本比较高。更重要的是,互联网的开放性意味着各个节点可能采用不同的中间件技术,而现有中间件对技术细节进行了过多的约束,导致基于不同中间件的系统难以跨互联网进行交互。

1999年到2000年,第一个版本的S O A P (Simple Object Access Protocol)发布[52]。SOAP 的引入产生了解决中间件跨互联网交互的新型中间件技术Web服务。W3C在第一次Web服务国际研讨会上给出了Web服务较为准确的定义[3]:“Web服务是由URI(Uniform Resource Identifier)标识的软件应用,该应用的接口和绑定可通过X M L制品进行定义、描述和发现;同时,该应用可通过基于互联网的X M L 消息协议与其他软件应用直接交互。”值得一提的是W e b服务并没有代替已有的中间件和互操作技术,而是更多地被应用于中间件集成[50]。不同的W e b服务可以选择不同的技术实现,只需要发布使用WSDL(Web Service Description Language)描述的服务接口并在UDDI(Universal Description, Discovery, and Integration)中注册,就可以被其他应用或客户端使用,并且对其他应用和客户端的实现技术没有要求。

在提供标准互操作的基础上,Web服务通过定义标准的组装方式,提供了复用遗产系统、快速开发基于互联网业务系统的能力。协奏(orchestration)和编排(choreography)是组装Web服务创建业务流程的两个不同的方面[34]。协奏描述了Web服务如何在消息层次上进行交互,包括商业逻辑和交互的执行顺序。这些交互可以跨越应用程序和/或企业组织,并产生一个长时间的、事务性的、多步骤的流程模型[35]。协奏通常从交互中某一方的角度来描述控制,而编排更强调一种协作,允许参与交互的每一方描述所参与交互的内容。编排跟踪交互的多方(包括客户、提供者以及商业伙伴)之间的消息序列(通常是发生在W e b服务之间的公共消息交换),而不是一方执行的业务流程。当前的标准有:(1)BPEL4WS(Business Process Execution Language for Web Services)[1],它基于微软的XLANG和IBM的WSFL(Web Services Flow Language);(2)由业务过程管理组织(Business Process Management Initiative)提出的BPML(Business Process Management Language)[8]和WSCI(Web Services Choreography Interface)[53],后者是由升阳、SAP、BEA和Intalio提出的描述Web服务协作的语言。

支持移动应用

现有中间件产品往往假设底层网络具有较高的带宽和可用性。但无线网络或者带宽较低,如传统G S M一般仅提供9600波特的带宽;或者可用性较低,如无线局域网(Wireless LAN)提供较高的带宽,但离开基站几百米就无法正常工作。这些特点导致现有中间件技术无法很好地支持基于无线网络的移动应用,由此产生了新的研究热点——移动计算中间件。移动计算中间件与传统中间件的主要区别在于通信模式、计算负载、运行上下文:在通信模式上,传统中间件针对永久可用的网络连接采用同步通信,而移动计算中间件针对断断续续的网络连接采用异步通信;在计算负载上,传统中间件运行于固定设备之上且支持重负载,而移动计算中间件运行于移动设备之上,仅支持轻量计算;在运行上下文方面,传统中间件运行于静态、封闭的环境,而忽略运行上下

封面报道

文,但移动计算中间件所处的动态、开放环境要求其必须对运行上下文敏感[26]。

移动计算研究人员的可选策略是或者扩展传统中间件或者实现一个全新的中间件。其中,DOLMAN开发了一种轻载的IIOP协议,通过缓存机制和应答机制适应不可靠的无线网络[38];文献[37]则通过一个网关进行WAP和IIOP之间的转换,从而允许移动用户访问CORBA服务;Mobiware是一种支持服务质量的CORBA 中间件,可通过服务质量的适配来支持移动应用[2];UIC是一种反射式中间件,允许用户根据运行环境定制平台的功能来调整中间件所需的计算和存储资源,如,UIC允许在Palm手持电脑上运行仅18kb的CORBA客户端[47];Nexus 是一种位置敏感的中间件,提供了在移动设备上运行的用户界面、支持多种定位机制、支持GSM、无线局域网、蓝牙(Bluetooth)等多种无线协议[16];Odyssey是一种数据共享中间件,通过数据复制提高无线网络中数据的可用性[39]。现阶段的移动计算中间件着重解决无线网络带宽和可用性、以及移动设备的资源问题,今后的研究重点在于无线网络的异构性、安全性、服务的动态发现等等[26]。

支持反射机制

中间件抽象出分布系统的共性问题,并封装了相关的支撑机制,允许上层应用以“黑盒”方式复用这些功能,从而屏蔽底层环境的异构性和复杂性。但是,互联网的发展促使应用环境从封闭、静态转变为开放、动态,这要求软件系统具有足够的灵活性以适应开放、动态的运行环境。开放中间件平台内部细节,允许上层应用以野缀杏方式复用中间件的功能,是中间件满足上层应用灵活性的有效途径。由此产生了下一代中间件的一个研究热点——反射式中间件。

“反射性”的概念首先在人工智能领域出现,然后被引入计算机的其他领域,如逻辑编程、功能编程、面向对象编程等。如果一个系统能够通过某种方式描述并表现自身,就称该系统具有自述性。如果系统的自述性与其真实的运行状态和行为具有一种因果关联,即系统自述的变化会导致系统状态和行为的改变,反之亦然,就称该系统具有反射性[24]。反射式系统具有内省(introspection)与调整(intercession)两种基本能力:内省指系统监测并推理自身状态的能力;调整则是指系统改变自身执行状态或内部语义的能力。

将反射性引入中间件能够开放平台内部的实现,从而提高中间件的定制能力和运行时的自适应能力。反射式中间件就是一种能够通过与系统运行状态和行为具有因果关联(casual-connected)的系统自述(self-representation)来监测并调整系统状态和行为的中间件系统[12]。目前反射式中间件的研究与试验大多数都集中于CORBA:OpenCorba是法国南特矿业大学(魪cole des Mines de Nantes)大学采用反射式语言NeoClasstalk实现的反射式CORBA。通过元类(meta-classes),OpenCorba将CORBA ORB的内部特性分离并单独实现,从而允许系统在运行过程中监测并调整这些内部功能单元[23]。dynamicTAO是在华盛顿大学ORB软件TAO的基础上研制的一种反射式CORBA软件,其反射能力体现在对系统服务的配置与重配置,即通过配置管理器,将特定的策略(如安全策略、调度策略等)及其实现机制关联起来[22]。mChaRM 是一种反射式的RMI分布调用机制,它将方法调用看成通过一个逻辑信道传输的消息,在该逻辑信道上实现一个关联对象,以监测信道中传输的消息并动态增加一些额外的消息处理功能[10]。PKUAS是北京大学自行研制开发的、遵循J2EE规范的反射式构件运行支撑平台,它提供基于软件体系结构的平台和应用反射能力[54]。

支持服务质量

QoS(Quality Of Service)的定义最初由

CCITT(国际电报与电话咨询委员会)给出:QoS是一个综合指标,用于衡量使用一个服务的满意程度,描述关于一个服务的某些性能特点。网络协议是分层结构的,下一层向上一层提供的功能被称为“服务”。从中间件在ISO 网络协议栈所处位置考虑,众多研究者提出了中间件的QoS概念,即中间件对上层应用提供的功能应该具有服务质量[40]。中间件的QoS功能包括QoS规约(特定于应用领域的、用户可理解的QoS参数的指定)、QoS映射(将领域特定的QoS参数映射成中间件、操作系统、网络等底层支撑软件所理解的QoS参数,并预留所需资源)和QoS执行(系统运行过程中按照QoS 规约与QoS映射指导、监控相关的活动,并可能根据运行情况对QoS进行降级或升级以达到整个系统最优的运行质量)。

BBN的Quo是一个强调QoS的中间件产品。它设计了一个质量描述语言QDL,由契约描述语言CDL、结构描述语言SDL和资源描述语言RDL组成。CDL用来描述客户和某个对象间的QoS契约,包括客户期望的QoS和对象能提供的QoS,监测和控制QoS的系统对象,以及监测到QoS改变时采取的行动。SDL描述了QUO 应用的结构。RDL描述可获得的系统资源及其状态。这些语言与CORBA IDL一起完整地描述一个应用的各个方面。QUO首次提出了QoS 开发者的概念,即QoS开发者负责用上述QDL 开发QUO契约,开发系统对象来实现QoS监测和控制,以及开发回调机制来实现监测到QoS 改变时采取的行动[48]。华盛顿大学在QoS方面的研究体现在T A O中的调度服务和A C E中的AQoSA。TAO调度服务为应用开发者提供了接口来指定对象操作的执行周期、最坏情况执行时间、重要程度、紧急程度等QoS参数,根据系统中所有操作的QoS进行调度分析,并映射到ORB中的分发优先级。AQoSA是在ACE中提供了统一的QoS API来为上层屏蔽底层的不同的QoS协议和接口。这些QoS API可以通过TAO向应用提供,也可与高层的中间件服务集成[43]。文献[41]在TAO中提供了多种支持QoS的机制,关注如何协调和动态选择合适的机制来保证端到端的QoS需求。马德里理工大学的戴米格勒(de Miguel)[29]在EJB模型中加入QoSContext、QoSBean和QoSNegotiation接口,提供一种支持QoS的EJB容器,为EJB构件提供资源预留、服务质量协商和资源竞争等机制的支持。

支持网格计算

与90年代计算机应用体系结构的主流是客户机/服务器结构不同的是,互联网的发展使许许多多不同类型的服务器都连接在网上,计算机系统的发展趋势开始从客户机/服务器结构转变为客户机/网络(Client-Network)结构。各种服务器在高层系统软件控制下形成一个具有巨大计算数据处理能力的服务“环境”,对各行各业和社会大众提供一体化的信息服务。这种环境通常称为“网格”(Grid),也称为“元计算”(Metacomputing),并被视为互联网技术发展的下一代目标。可以说,互联网实现了计算机硬件的连通,Web实现了网页的连通,而网格试图实现互联网上所有资源的全面连通,包括计算资源、存储资源、通信资源、软件资源、信息资源、知识资源等等。在互联网/万维网上,数据和计算资源零散地分布在各个网络站点;而在信息网格中,资源可统一管理和使用。用户可以通过网格门户(Portal)之类的技术,透明地使用整个网络资源。他们看到的是一个逻辑门户上的、若干与自己相关的频道,而不用在成千上万个网站中去搜索自己想要的信息。

支持网格计算的中间件为应用开发者提供对分布式资源的统一访问、管理、控制、监测、通信和安全支持。由网格管理的资源一般是地理上分布的、体系结构和管理上异构的计算和数据资源,而用户系统能够以更快的速度和更简便的方式使用这些资源。这也就意味着

封面报道

中间件的责任是解决开发者使用这些资源时遇到的、由资源分布和大规模带来的问题。

在国外,最著名的网格计算研究是美国的Globus项目。该项目的主要研究目标有两个:其一是网格技术的研究;其二是相应软件的开发和标准的制定。同时,Globus项目还涉及到网格应用的开发及试验床的建立。最近,Globus项目提出的网格体系结构模型包括如下几个部分[17]:网格结构层(Grid Fabric),提供资源相关、站点相关的基本功能,便于高层分布式网格服务的实现;网格服务层(Grid Services),实现资源无关和应用无关的功能,网格服务的实现涉及到地域和机构的分布;网格应用工具层(Grid Application Toolkits),提供更为专业化的服务和组件用于不同类型的应用;应用层(Application),由用户开发的应用系统组成,网格用户可以使用其他层次的接口和服务完成网格应用的开发。

支持自主计算

计算技术的普及,使得IT人员紧缺。即使人员充足,系统的复杂性也可能增长到人类能力无法控制的地步。IT产业必须保证计算系统能力的持续增长,这意味着计算系统复杂性的增加是持续的、不可避免的。为此,IBM 提出了自主计算(Autonomic Computing)[18]的概念。一个自主计算系统必须至少具备8个特性:必须能够标识自身及其组成构件;必须能够在不同的条件(甚至是预料之外的条件)下配置或重配置自身;永远不会停滞于某种状态,而是不断调整状态以获得最优性能;必须具备自我复原的能力;必须具有足够的自我保护能力;知道外部环境以及自身活动的上下文,并能做出相应的动作;必须能够在开放环境中运行;在隐藏复杂性的同时,能够预先最优化需要的资源。从系统管理的5大基本能力而言,上述8个特性可以归结为自我配置、自我优化、自我修复和自我保护(不涉及计费)。

从中间件现有功能以及呈现出的新特性来看,下一代中间件的功能更多、更强,中间件的管理(尤其是配置)更加复杂,而CORBA、EJB、Web服务等中间件使用的繁杂都能说明这一点。另一方面,中间件的应用领域和环境越来越丰富,且大多具有很强的变化性。如在开放的互联网环境中,系统可用资源、用户请求情况和QoS等方面都会不断变化,要求中间件能够随着环境变化随时对自身的配置进行动态调整。因此,自治性也将成为下一代中间件的主要特性之一。

DynamicTAO[22]支持运行时刻以一种安全的方式对构件的并发控制、安全和监测等方面进行重新配置,以及自动的装载截取器,实现特定功能(例如日志、加密和访问控制等等);另外,DynamicTAO使用动态软实时调度机制,实现根据用户请求、系统资源状态和QoS需求及满足程度进行动态的QoS控制和管理、资源预留和协商和实时调度。O p e n O R B[6]则针对分布式多媒体系统中不同用户QoS需求不同的特点,根据不同QoS需求对系统资源的消耗,进行细粒度的资源协调和管理以及QoS降级操作。JAGR[9]通过对JBoss进行扩展实现对应用系统的自动修复。其中使用的关键技术包括:使用插错技术构造故障依赖图;加入监测器监视系统运行情况;发生故障时根据故障依赖图递归重启EJB容器。自治愈中间件[27]的关注点是辨识、组织、推理和控制中间件可靠性的属性、威胁和可以获取可靠性的途径。自治愈中间件中对一个故障和错误可能存在多种容错机制,由中间件根据当时的系统情况和用户的可靠性需求选择合适的机制进行处理。

关于网构软件

从前面对中间件研究现状与发展趋势的介绍以及驱动力的探讨可见,互联网平台和环境

的出现及其发展,对中间件近十多年的研究与实践起到了决定性的影响。

互联网作为不同于传统计算机的硬件平台,具有如下基本特征:无统一控制的“真”分布性;节点的高度自治性;节点链接的开放性和动态性;人、设备和软件的多重异构性;实体行为的不可预测性;运行环境的潜在不安全性;使用方式的个性化和灵活性;网络连接环境的多样性。由于软件系统所基于的计算机硬件平台正经历从集中封闭的计算平台向开放的互联网平台的转变,软件系统作为计算机系统的灵魂,随着其运行环境的演变也经历了一系列的变革。那么,未来的基于互联网平台的软件系统又将会呈现出一个什么形态呢?

从技术的角度看,以软件构件等技术支持的软件实体将以开放、自主的方式存在于互联网的各个节点之上,任何一个软件实体可在开放的环境下通过某种方式加以发布,并以各种协同方式与其他软件实体进行跨网络的互连、互通、协作和联盟,从而形成一种与当前的信息Web类似的Software Web。Software Web不再仅仅是信息的提供者,而是各种服务(功能)的提供者。网络环境的开放与动态性、以及用户使用方式的个性化要求,决定了这样一种Software Web并不能像传统软件那样一蹴而就,它应能感知外部网络环境的动态变化,并随着这种变化按照功能指标、性能指标和可信性指标等进行静态的调整和动态的演化,以使系统具有尽可能高的用户满意度。本文将这样一种新的软件形态称为网构软件(Internetware)。

网构软件是在互联网开放、动态和多变环境下软件系统基本形态的一种抽象,它既是传统软件结构的自然延伸,又具有区别于在集中封闭环境下发展起来的传统软件形态的独有的基本特征[55]:

●自主性:指网构软件系统中的软件实体具有相对独立性、主动性和自适应性。自主性使其区别于传统软件系统中软件实体的依赖性和被动性;

●协同性:指网构软件系统中软件实体与软件实体之间可按多种静态连接和动态合作方式在开放的网络环境下加以互连、互通、协作和联盟。协同性使其区别于传统软件系统在封闭集中环境下单一静态的连接模式;

●反应性:指网构软件具有感知外部运行和使用环境,并对系统演化提供有用信息的能力;反应性使网构软件系统具备了适应互联网开放、动态和多变环境的感知能力;

●演化性:指网构软件结构可根据应用需求和网络环境变化而发生动态演化,主要表现在其实体元素数目的可变性、结构关系的可调节性和结构形态的动态可配置性。演化性使网构软件系统具备了适应互联网开放、动态和多变环境的应变能力;

●多态性:指网构软件系统的效果体现出相容的多目标性。它可根据某些基本协同原则,在动态变化的网络环境下,满足多种相容的目标形态。多态性使网构软件系统在网络环境下具备了一定的柔性和满足个性化需求的能力。

传统的软件理论、方法和技术等在处理网构软件时遇到了一系列的挑战。以软件开发技术为例,由于所基于的平台是封闭静态框架,传统软件系统的开发基本都是采用自顶向下的途径,确定系统的范围(即Scoping)总是建立需求的第一步,然后通过分解而实施分而治之的策略,整个开发过程处于有序控制之下。而网构软件系统的开发所基于的平台是一个有丰富基础软件资源,但同时又是开放、动态和多变的框架,开发活动呈现为通过基础软件资源组合为基本系统,然后经历由“无序”到“有序”的往复循环过程,基本上是一种自底向上、由内向外的螺旋方式。其他挑战还包括软件基本模型由于所处平台的特性和开放应用的需求而变得比任何传统的计算模型都更为复杂,软件生命周期由于“无序”到“有序”的

封面报道

循环而呈现出不同于传统生命周期概念的“大生命周期概念”,程序正确性由于目标的多样化而表现为传统正确性描述的一个偏序集,软件体系结构的侧重点从基于实体的结构分解转变为基于协同的实体聚合,软件生产过程和环境的变化导致基于互联网的面向用户的虚拟工厂的形成。

综上所述,互联网及其上应用的快速发展与普及,使计算机软件所面临的环境开始从静态封闭逐步走向开放、动态和多变。软件系统为了适应这样一种发展趋势,将会逐步呈现出柔性、多目标、连续反应式的网构软件系统的形态。这种新型的软件形态将使系统软件和支撑平台的研究重点开始从操作系统等转向新型中间件平台,而网构软件的理论、方法和技术的突破,必将导致在建立新型中间件平台创新技术方面的突破。

归结起来,网构软件理论、方法、技术和平台的主要突破点在于实现如下转变,即从传统软件结构到网构软件结构的转变,从系统目标的确定性到多重不确定性的转变,从实体单元的被动性到主动自主性的转变,从协同方式的单一性到灵活多面性的转变,从系统演化的静态性到系统演化的动态性的转变,从基于实体的结构分解到基于协同的实体聚合的转变,从经验驱动的软件手工开发模式到知识驱动的软件自动生成模式的转变。

建立这样一种新型的理论、方法、技术和平台体系具有两个方面的重要性:一方面,从计算机软件技术发展的角度,这种新型的理论、方法和技术将成为面向互联网计算环境的一套先进的软件工程方法学体系,为21世纪计算机软件的发展构造理论基础;另一方面,这种基于互联网计算环境上软件的核心理论、方法和技术,将为我国在未来5~10年建立面向互联网的软件产业打下坚实的基础,在基于互联网新型中间件平台等方面形成具有特色的技术标准和技术专利,为我国软件产业的跨越式发 展提供核心技术的支持。

[1] Andrews, T., Francisco Curbera, Hitesh Dholakia, Yaron Goland, Johannes Klein, Frank Leymann, Kevin Liu, Dieter

Roller, Doug Smith, Satish Thatte, Ivana Trickovic, Sanjiva Weerawarana, Business Process Execution Language for Web Services Version 1.1, Published on the World Wide Web by BEA Systems, International Business Machines Corporation, Microsoft Corporation, SAP AG, Siebel Systems. 5 May 2003

[2] Angin, O., A. Campbell, M. Kounavis, and R. Liao. The Mobiware Toolkit: Programmable upport for Adaptive Mobile

Netwoking. In Personal Communications agazine, Special Issue on Adapting to Network and Client Variability. IEEE Computer ociety Press, August 1998.

[3] Austin, D., Abbie Barbir and Sharad Garg, Web Services Architecture Requirements, https://www.doczj.com/doc/ce10006572.html,/TR/2002,

April 2002.

[4] Blair, G., Coulson, G., Andersen, A., Blair, L., Clarke, M., Costa, F., Duran-Limon, H., Fitzpatrick, T., Johnston, L.,

Moreira, R., Parlavantzas, N., and Saikoski, K. The design and implementation of Open ORB 2. IEEE Distrib. Syst.

Online 2, 6 (Sept. 2001); see https://www.doczj.com/doc/ce10006572.html,/dsonline.

[5] Blair, G., G. Coulson, P. Robin and M. Papathomas, An Architecture for Next Generation Middleware, In Proceedings

of Middleware '98, 1998.

[6] Blair, G.S., Geoff Coulson, Lynne Blair, Hector Duran-Limon, Paul Grace, Rui Moreira and Nikos Parlavantzas,

Reflection, Self-Awareness and Self-Healing in OpenORB, Workshop on Self-Managing System '02, Nov 18-19, 2002, Charleston, SC, USA.

[7] Bray, M. Middleware in Software Technology Review. https://www.doczj.com/doc/ce10006572.html,/str/.

[8] Business Process Management Initiative, Business Process Modeling Language (BPML), V1.0, 2001.

[9] Candea, G., Emre Kiciman, Steve Zhang, Pedram Keyani, Armando Fox, JAGR: An Autonomous Self-Recovering 参考文献

封面报道

相关主题
文本预览
相关文档 最新文档