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

  • 格式:pdf
  • 大小:194.82 KB
  • 文档页数:23

下载文档原格式

  / 23
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

梅宏

北京大学信息科学技术学院软件研究所,北京 100871

{E-mail:meih@}

1 前言

“中间件”这一术语最早出现在1980年代后期,主要用于描述网络连接管理软件。在1990年代中期,随着网络技术快速发展,中间件的概念日益普及。中间件在学术界和产业界均得到长期、广泛的研究与实践,尽管目前尚没有统一的中间件定义,但对于中间件的意义与内涵已有基本共识。如,IEEE的分布系统专家组认为“中间件通过提供简单、一致、集成的分布编程环境,简化分布应用的设计、编程和管理。本质上,中间件是一个分布软件层(或平台),抽象了底层分布环境(网络、主机、操作系统、编程语言)的复杂性和异构性”[19];美国国家自然基金委员会认为“中间件是建立在网络传输服务之上、辅助开发新应用与网络服务、适用于多个应用的一种软件”[30];对象管理组织OMG认为“中间件就是解决网络环境下互操作问题的软件,它同时还提供事务、目录、事件等其它基本服务”[44];CMU软件工程研究所认为“中间件是一组支持软件连接的服务的集合,允许在一个或多个主机上运行的多个过程通过网络进行交互。中间件是将大型机应用移植到客户/服务器应用、以及跨异构平台通信的基础机制,最初用于解决客户/服务器体系的互操作问题(20世纪90年代)”[7]。不难看出,这些定义从不同角度、采用不同字眼所描述的中间件具有相同的目标——解决分布应用开发中诸如互操作等共性问题,以及相同的内涵——提供这些共性问题的具有普适性的支撑机制。

一般说来,中间件有两层含义。从狭义的角度,中间件意指Middleware,它是表示网络环境下处于操作系统等系统软件和应用软件之间的一种起连接作用的分布式软件,通过API的形式提供一组软件服务,可使得网络环境下的若干进程、程序或应用可以方便的交流信息和有效的进行交互与协同。简言之,中间件主要解决异构网络环境下分布式应用软件的通信、互操作和协同问题,它可屏蔽并发控制、事务管理和网络通信等各种实现细节,提高应用系统的易移植性、适应性和可靠性。从广义的角度,中间件在某种意义上可以理解为中间层软件,通常是指处于系统软件和应用软件之间的中间层次的软件,其主要目的是对应用软件的开发提供更为直接和有效的支撑。

本文余下部分组织为:第2章介绍中间件研究现状,包括中间件封装的分布应用开发共性问题、主要的中间件技术与产品、现有中间件实现关键技术以及中间件国内外市场;第3章通过中间件研究热点阐述其发展趋势;第4章考察中间件发展驱动力并据此预测中间件的未来趋势;第5章总结全文。

2 研究现状

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

(1)通信支持

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

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

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

(2)并发支持

分布式应用系统一般需要具有较强的处理能力,也就是说,系统可以处理很多的客户请求。为尽量利用硬件的计算能力,一般系统实现时采用并发技术(如多进程或多线程),对多个客户请求同时进行处理。但并发技术的使用是一个复杂而且容易出错的过程:并发执行的程序单元之

间可能会互相影响、竞争资源,也可能会产生系统内部状态的不一致。因此,应用程序使用并发技术后,其自身复杂度会有很大提高。

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

(3)公共服务

公共服务是对应用中共性功能或约束的抽取。中间件提供一个或一组公共服务,供系统使用,这组公共服务不特定于某一种或某一类系统;应用系统在实现和运行时直接使用这些公共服务。公共服务的好处在于一方面将应用中的共性抽取出来由中间件实现,减少了系统开发的工作量;另一方面使得应用开发者更能关注业务功能的需求、设计和实现,有助于提高软件质量。

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

2.1 主要技术与产品

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

(1)事务式中间件(Transactional Middleware)

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

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