计算机系统最初阶段多是单机系统,多个用户是通过联机终端来访问。随着网络的出现,产生了客户/服务器的计算服务模式,多个客户端可以共享数据库服务器和打印服务器等。随着计算机和网络技术的飞速发展,许多软件需要在不同厂家的硬件平台、网络协议异构环境下运行,应用的规模从局域网发展到广域网,应用范围面向三层和多层体系结构的分布式环境,在分布式环境中,无论是硬件平台还是软件平台都不可能做到统一,而大规模的应用软件通常要求在软硬件各不相同的分布式网络上运行。中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,开发者不得不直接面对许多复杂棘手的问题,如操作系统的多样性、繁杂的网络程序设计和管理、复杂多变的网络环境、数据分散处理带来的不一致性问题等等,这些与用户的业务没有直接关系,但又必须解决,耗费了大量的时间和精力,因此开发者迫切需要一种基于标准的、独立于计算机硬件以及操作系统的开发和运行环境,于是,中间件技术应运而生。
1 中间件的概念
在众多关于中间件的定义中,比较普遍接受的是IDC表述:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源;中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通信。IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件是介于操作系统(包括底层通信协议)和各种分布式应用程序之间的一个软件层。总的作用是建立分布式软件模块之间互操作的机制,屏蔽底层分布式环境的复杂性和异构性,为处于自己上层的应用软件提供运行与开发环境,帮助用户灵活、高效地开发和集成复杂的应用软件。在具体实现上,中间件是一个用应用程序接口定义的分布式软件管理框架,具有强大的通信能力和良好的可扩展性。
2 中间件的分类
随着计算机软件技术的发展,中间件技术也已日渐成熟,并且出现了不同层次、不同类型的中间件产品。按照IDC分类方法,中间件可分为以下6类:
2.1 终端仿真/屏幕转换
用以实现客户机图形用户接口与已有的字符接口方式的服务器应用程序之间的互操作。
2.2 数据访问中间件
适用于应用程序与数据源之间的互操作模型,客户端使用面向数据库的API,以提请直接访问和更新基于服务器的数据源,数据源可以是关系型、非关系型和对象型。这类中间件大都基于SQL语句,采用同步通讯方式。此类中间件使应用开发简单化,但如果透过广域网使用,则会带来严重的效率问题,因为在低速网上来回交互SQL语句会使通讯流量过大,同时对数据压缩、加密带来不便。
2.3 远程过程调用中间件
RPC机制是早期开发分布式应用时经常采用的一种同步式的请求应答协议。通过这种协议,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程。RPC扩展了过程语言中的“功能调用/结果返回”的机制,使得它可以适用于一个远程环境。由于RPC机制是同步方式,因而在工作的时候,要求客户方和服务方均能正确工作才能很好地运行,有一方不能工作将导致RPC失败。在网络故障、机器故障存在的情况下,这一要求是很难保证的。另外,由于大多数RPC机制很难建立点到点的关系,因而也很难用在面向对象的编程当中。
2.4 消息中间件
越来越多的分布式应用采用消息中间件来构建,通过消息中间件把应用扩展到不同的操作系统和不同的网络环境。基于消息的机制更多地适用于事件驱动的应用,当一个事件发生时,消息中间件通知服务方应该进行何种操作。其核心安装在需要进行消息传递的系统上,在它们之间建立逻辑通道,由消息中间件实现消息发送。消息中间件可以支持同步方式和异步方式,实际上是一种点到点的机制,因而可以很好的适用于面向对象的编程方式。中间件领域目前最热门的技术是异步的消息中间件,异步中间件技术比同步中间件技术具有更强的容错性,在系统故障时可以保证消息的正常传输。
2.5 交易中间件
是专门针对联机交易处理系统而设计的,如银行业务系统、定票系统等。联机交易处理系统需要处理大量并发进程,处理并发涉及到操作系统、文件系统、编程语言、数据通讯、数据库系统、系统管理、应用软件,交易中间件就是一组程序模块,用以减少开发一个联机交易处理系统所需的编程量。
2.6 对象中间件
传统的面向对象技术通过封装、继承及多态提供了良好的代码重用功能,但是这些对象只存在一个程序中,外面的世界并不知道它们的存在,也无法访问它们。面向对象的中间件就是要解决这些问题,面向对象的中间件提供一个标准的构件框架,能使不同厂家的软件通过不同的地址空间、网络和操作系统交互访问。该构件的具体实现、位置及所依附的操作系统对客户来说都是透明的。
3 主流中间件技术平台
考察当前主流的分布计算技术平台,主要有OMG的CORBA,Sun的J2EE和Microsoft DNA 20000,它们都是支持服务器端中间件技术开发的平台,但都有其各自特点,将分别阐述如下:
3.1 OMG的CORBA
公共对象请求代理体系结构(CORBA,Common Ob—ject Request Broker Architecture)是对象管理组织(OMG)基于众多开放系统平台厂商提交的分布对象互操作内容基础上制定的分布式应用程序框架的规范。
CORBA是由绝大多数分布计算平台厂商所支持和遵循的系统规范,具有模型完整、先进,独立于系统平台和开发语言,被支持程度广泛的特点,已逐渐成为分布计算技术的标准。COBRA标准主要分为3个层次:对象请求代理、公共对象服务和公共设施。最底层是对象请求代理(ORB,Object
Request Broker),规定了分布对象的定义(接口)和语言映射,实现对象间的通讯和互操作,是分布对象系统中的“软总线”;在ORB之上定义了很多公共服务,可以提供诸如并发服务、名字服务、事务(交易)服务、安全服务等各种各样的服务;最上层的公共设施则定义了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则。CORBA的优点是大而全,互操作性和开放性非常好,缺点是庞大而复杂,并且技术和标准的更新相对较慢,在具体的应用中使用不是很多。3.2
Sun的J2EE
为了推动基于Java的服务器端应用开发,Sun在1999年底推出了Java2技术及相关的J2EE规范。
J2EE的目标是提供与平台无关的、可移植的、支持并发访问和安全的、完全基于Java的开发服务器端中间件的标准。J2EE简化了构件可伸缩的、基于构件服务器端应用的复杂度。在J2EE中,Sun给出了完整的基于Java语言开发面向企业分布应用的规范,其中在分布式互操作协议上,J2EE同时支持远程方法调用(RMI,Re—mote
Method lnvocation)和因特网对象请求代理间协议(IlOP,Intemet Inter-ORB Protocal),在服务器端分布式应用的构造形式包括了Java
Scrvlct、JSP(Java ServerPage)、EJB等多种形式,以支持不同的业务需求。
EJB是Sun推出的基于Java的服务器端构件规范J2EE的一部分,在J2EE推出之后得到了广泛的发展,已经成为应用服务器端的标准技术。Sun
EJB技术是在Java Bean本地构件基础上,发展的面向服务器端分布应用构件技术。它基于Java语言,提供了基于Java二进制字节代码的重用方式。EJB给出了系统的服务器端分布构件规范,这包括了构件、构件容器的接口规范以及构件打包、构件配置等的标准规范内容。EJB技术的推出,使得用Java基于构件方法开发服务器端分布式应用成为可能。从企业应用多层结构的角度,EJB是业务逻辑层的中间件技术,与JavaBeans不同,它提供了事务处理的能力,自从三层结构提出以后,中间层,也就是业务逻辑层,是处理事务的核心,从数据存储层分离,取代了存储层的大部分地位。从分布式计算的角度,EJB像CORBA一样,提供了分布式技术的基础,提供了对象之间的通讯手段。
从Internet技术应用的角度,EJB和Servlct,JSP一起成为新一代应用服务器的技术标准,EJB中的Bean可以分为会话Bean和实体Bean,前者维护会话,后者处理事务,现在Scrvlet负责与客户端通信,访问EJB,并把结果通过JSP产生页面传回客户端。
J2EE的优点是技术先进,架构优秀,真正的三层结构,用Java开发构件,能够做到“Write once,run
any—where”,开发大型的应用优势明显,可以配置到包括Windows平台在内的任何服务器端环境中去。缺点是缺少一系列的接口支持,技术进入门槛高,开发起来的难度大。
3.3 Microsoft DNA 2000
Microsoft DNA 2000(Distributed interNet Applications)是Microsoft在推出Windows2000系列操作系统平台基础上,在扩展了分布计算模型以及改造Back
Office系列服务器端分布计算产品后发布的新的分布计算体系结构和规范。
在服务器端,DNA 2000提供了ASP、COM、Cluster等的应用支持。目前,DNA2000在技术结构上有着巨大的优越性。一方面,由于Microsoft是操作系统平台厂商,因此DNA
2000技术得到了底层操作系统平台的强大支持;另一方面,由于Microsoft的操作系统平台应用广泛,因此在实际应用中,DNA
2000得到了众多应用开发商的采用和支持。
DNA 2000融合了当今最先进的分布计算理论和思想,如事务处理、可伸缩性、异步消息队列、集群等内容。DNA使得开发可以基于Microsoft平台的服务器构件应用,其中,如数据库事务服务、异步通讯服务和安全服务等,都由底层的分布对象系统提供。
以Microsoft为首的DCOM/COM/COM+阵营,从DDE,OLE到ActiveX等,提供了中间件开发的基础,如VC,VB,Delphi等都支持DCOM,包括OLE
DB在内新的数据库存取技术,随着Windows2000的发布,Microsoft的DCOM/COM/COM+技术,在DNA2000分布计算结构基础上,展现了一个全新的分布构件应用模型。首先,DCOM/COM/COM+的构件仍然采用普通的COM(ComponentObject
Model)模型。COM最初作为Microsoft桌面系统的构件技术,主要为本地的OLE应用服务,但是随着Mi-crosoft服务器操作系统NT和DCOM的发布,COM通过底层的远程支持使得构件技术延伸到了分布应用领域。DCOM/COM/COM+更将其扩充为面向服务器端分布应用的业务逻辑中间件。通过COM+的相关服务设施,如负载均衡、内存数据库、对象池、构件管理与配置等等,DCOM/COM/COM+将COM、DCOM、MTS的功能有机地统一在一起,形成了一个概念、功能强的构件应用体系结构。而且,DNA2000是单一厂家提供的分布对象构件模型,开发者使用的是同一厂家提供的系列开发工具,这比组合多家开发工具更有吸引力,不足是依赖于Mi-crosoft的操作系统平台,因而在其它开发系统平台如(Unix、Linux)上不能发挥作用。
4 中间件技术的发展趋势
4.1 网格技术
中间件技术当前所面临的重大挑战是要在互联网这个复杂的分布式系统中构建应用程序。许多计算机专家认为,将整个互联网的各种资源全部整合在一起,为用户提供统一的服务,是相当困难甚至难以实现的。当然,对于具体的应用领域,具体的网络区域,用中间件技术将其中的各种资源整合在一起还是相当有前景的。目前方兴未艾的网格(GRID)技术实质上即是一个基于互联网的中间件系统,可同时运用网络中所有的CPU、存储器、操作系统、应用软件等资源,用户通过PC、手机或PDA,可从互联网上获取来自全球的资源,互联网将变成一个虚拟的、强大的计算平台。网格的重要特征是对资源的共享和管理,包括:(1)计算资源。启动程序,监测、控制进程运行;对分配给进程的资源的管理机制;查询功能,确定硬、软件状态、相关负载信息和队列状态等。(2)存储资源。上载、下载文件;对分配给数据传输的资源(空间、磁盘带宽、网络带宽、CPU)的管理机制,确定可用空间、带宽使用率等相关负载信息。(3)网络资源。提供控制分配给网络传输的资源的管理机制;查询网络状态和负载的功能。(4)代码库。管理源码和目标码的机制。另外,网格系统还应包括:①网格特有事务所需要的通信和认证协议,通信协议允许资源之间交换数据,功能包括传输、寻径和名字服务。建立在通信协议之上的认证协议为确认用户和资源的身份提供加密安全机制。②管理一组相关联的资源集合,并负责资源集合之间的交互,包括:目录服务、合作分配资源任务调度服务、监控诊断服务、数据复制服务、支持网格的编程、软件发现服务、团体授权服务等。
4.2 面向移动计算
移动计算问题可以具体展开为三个方面:①用户移动。无论用户处在什么位置,都能为其提供一致的工作环境,包括用户的配置信息和他所“订阅”的服务。②终端移动。使终端设备无论在任何接入点接入网络,都能正常工作,也就是说底层网络对终端设备是透明的。③服务移动。当前,越来越多的服务依赖于移动的资源,甚至服务本身就处在不断移动中,必须保证用户及其终端设备可以随时找到这些服务。据此,移动计算需要一个基础设施将合适的协议、机制、工具集成起来,提供上述三方面的功能。移动中间件正是这样一种基础软件。它随时对移动用户和终端进行跟踪和重定位,保证移动实体的相互通信,克服系统的异构性,并且为开放的网络环境提供安全性。随着网络带宽不断增大,人们对移动设备的服务质量问题的顾虑渐渐打消,而使用移动设备的方便性日益突出。人们要求各种服务都可以在移动的情况下(包括上述三种情况)获得。因而移动中间件具有十分广泛的发展前景。泛化计算(Ubiquitous
Computing)是移动计算的极至,指从大型机、PC、到PDA以至安装有处理器的各种各样的日常生活设备之间能够相互通信、协调工作。显然,在这个领域,中间件面临更为复杂的异构环境以及无线通信和动态配置的挑战。
4.3 面向服务质量
传统的单一系统,如大型主机、容错系统等,依赖昂贵的配置与设计来实现高可用性,而高可用中间件主要是在软件层面利用系统的冗余部件(比如机群系统有大量这样的部件)为用户提供高可用功能。这有三个方面的优势:成本低、可扩展性好、更加灵活方便。为了保证数据的可靠性和一致性,还有必要在中间件中增加保证QOS的协议(在CORBA中已经有这样的协议)以实现数据的备份以及各种各样的容错功能。另外,还要保证此方法的响应时间尽可能的快(这里泛指用户响应时间以及切换时间等一切影响服务质量的时间)。随着网络技术的发展,越来越多的用户使用网络提供的服务,这就对服务质量提出了更高的要求,质量低劣的服务是没有市场的。高可用中间件、容错中间件在这一背景下将不断完善和发展。
4.4 各种技术的发展对中间件技术产生的影响
由于中间件系统的主要目的就是整合各种异构系统中的资源,使其协调工作。因此,各种异构系统中各种技术的发展都会或者为中间件系统的开发提供便利,或者设置障碍。Web
Service技术就是在XML语言、异步通信机制、以及基于内容的消息传递机制等各种技术发展基础之上提出并发展起来的。又例如,当前移动代理(Mobile
Agent)技术在中间件的设计和实现过程中发挥越来越重要的作用,特别是基于互联网的应用以及涉及到移动计算和泛化计算的中间件的设计。移动代码和移动代理技术可以提高分布式系统的灵活性和适应性。
中间件从本质上是对分布式应用的抽象,抛开了与应用相关的业务逻辑的细节,保留了典型的分布交互模式的关键特征,将纷繁复杂的分布式系统以统一的层面形式呈现给应用。应用在中间件提供的环境中可以更好地集中于业务逻辑上,并以构件化的形式存在,最终自然而然地在异构环境中实现良好的协同工作。构件是一种前沿的软件设计思想,对整个软件行业的发展有着至关重要的推动作用。而中间件作为应用软件系统集成的关键技术,保证了构件化思想的实施,并为构件提供了真正的运行空间。中间件工业化标准的制定、统一及实现,使基于构件的应用开发成为可能,可以预见,软构件技术是软件产业化革命的必然发展趋势。
|