中间件
编辑
目录
1基本概念编辑
英文释义
Middleware is computer software that connects software components and applications. The software consists of a set of enabling services that allow multiple processes running on one or more machines to interact across a network. This technology evolved to provide for interoperability in support of the move to coherent distributed architectures, which are used most often to support and simplify complex, distributed applications. It includes web servers, transaction monitors, and messaging-and-queueing software.
中间件是一类连接软件组件和应用的计算机软件,它包括一组服务。以便于运行在一台或多台机器上的多个软件通过网络进行交互。该技术所提供的互操作性,推动了一致
分布式体系架构的演进,该架构通常用于支持并简化那些复杂的
分布式应用程序,它包括web服务器、
事务
监控器和
消息队列
软件。
中间件在操作系统、网络和
数据库之上,
应用软件的下层,总的作用是为处于自己上层的
应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的
系统软件或服务程序,
分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和
网络通信。
2相关概念编辑
·企业服务
总线(ESB : Enterprise Service Bus):ESB 是一种开放的、基于标准的
分布式同步或异步信息传递中间件。通过 XML、Web Service接口以及标准化基于规则的
路由选择文档等支持,ESB 为企业应用程序提供安全互用性。
·远程过程调用(RPC:Remote Procedure Call):指客户机向服务器发送关于运行某程序的请求时所需的标准。
·对象请求代理(ORB:Object Request Broker):为用户提供与其他
分布式网络环境中对象通信的接口。
·
数据库访问中间件(Database Access Middleware):支持用户访问各种操作系统或应用程序中的数据库。SQL 是该类中间件的其中一种。
·信息传递(Message Passing):
电子邮件系统是该类中间件的其中一种。
3基本特点编辑
特长
满足大量应用的需要 ;
运行于多种
硬件和OS平台 ;
支持标准的协议 ;
支持标准的接口。
局限
中间件能够屏蔽操作系统和网络协议的差异,为应用程序提供多种通讯机制;并提供相应的平台以满足不同领域的需要。因此,中间件为应用程序提供了一个相对稳定的高层应用环境。然而,中间件服务也并非“万能药”。中间件所应遵循的一些原则离实际还有很大距离。多数流行的中间件服务使用专有的API和专有的协议,使得应用建立于单一厂家的产品,来自不同厂家的实现很难互操作。有些中间件服务只提供一些平台的实现,从而限制了应用在异构系统之间的移植。应用开发者在这些中间件服务之上建立自己的应用还要承担相当大的风险,随着技术的发展他们往往还需重写他们的系统。尽管中间件服务提高了
分布计算的抽象化程度,但应用开发者还需面临许多艰难的设计选择,例如,开发者还需决定分布应用在client方和server方的功能分配。通常将表示服务放在client以方便使用显示设备,将数据服务放在server以靠近
数据库,但也并非总是如此,何况其它应用功能如何分配也是不容易确定的。
4发展沿革编辑
CICS
最早具有
中间件技术思想及功能的软件是IBM的CICS,但由于CICS不是分布式环境的产物,因此人们一般把Tuxedo作为第一个严格意义上的中间件产品。Tuxedo是1984年在当时属于AT&T的
贝尔实验室开发完成的,但由于分布式处理当时并没有在商业应用上获得像今天一样的成功,Tuxedo在很长一段时期里只是实验室产品,后来被Novell收购,在经过Novell并不成功的商业推广之后,1995年被BEA公司收购。尽管中间件的概念很早就已经产生,但中间件技术的广泛运用却是在10年之中。BEA公司1995年成立后收购Tuxedo才成为一个真正的中间件厂商,IBM的中间件MQSeries也是90年代的产品,其它许多中间件产品也都是最近几年才成熟起来。
1998年IDC公司对于中间件有一个定义,并根据用途将其划分为6个类别。如今所保留下来的只有
消息中间件和交易中间件,其他的已经被逐步融合到其他产品中了,被包裹进去了,在市场上已经没有单独的产品形态出现了。例如,当时有一个叫
屏幕数据转换的中间件,其主要是针对IBM大机终端而设计产品,用于将IBM大机终端的字符界面转化为用户所喜欢的图形界面,类似的东西当时都称为中间件。但随着IBM大机环境越来越少,当时盛行一时的此类中间件如今已经很少再被单独提及。
服务器
2000年前后,
互联网盛行起来,随之产生了一个新的东西,就是
应用服务器。实际上,交易中间件也属于是应用服务器,为了区分,人们把传统的交易中间件称为分布交易中间件,因它主要应用在
分布式环境下,而将新的应用服务器,称为J2EE中间件,到目前为止,这都是市场上非常热门的产品。
EAI概念出来之后,市场上又推出了一些新的
软件产品,例如
工作流、Portal等,但从分类上不知道怎么归类,向上不能够划归应用,往下又不能归入操作系统,于是就把它归入了中间件,如此中间件的概念更加扩大了。市场上对于中间件,各家的说法不一,客观上也导致了理解上的复杂性。
发展现状
技术现状
中间件技术是在克服复杂网络应用的共性问题中不断发展和壮大起来的,这些问题可以归纳为四个方面:
1、从计算环境来看:中间件面对的是一个复杂、不断变化的计算环境,要求
中间件技术具有足够的灵活性和可成长性;
3、从应用支撑角度来看:中间件需要提供分布应用开发、集成、部署和运行管理的整个生命周期的总体运行模型;
因此,由于网络应用的复杂性,特别是分布、异构和自治等特点,决定了
中间件技术和产品的形态多样性。
中间件技术已经形成一个丰富的谱系(图1),并正在向上(应用框架和普适服务)和向下(融合操作系统、
数据库管理系统的功能)两个方向不断延伸,并在向更宽广的应用领域拓展。
图 1
中间件技术谱系
在国内,
国防科技大学、
北京大学、北航、
中科院
软件所、
东南大学等大学和院所很早就投入到
中间件技术的研究中,并形成了一系列的成果。在国家发改委、信息产业部电子发展基金和国家科技部863计划和政府其他基金资助下,通过各项目研究单位和国内骨干
软件企业多年的不懈努力,国内在基础中间件
领域已经形成丰富的技术积累,并在CORBA技术(
国防科技大学与
中创软件)、消息中间件技术(
中科院软件所)、J2EE应用服务器(北京大学)、Web Service(北航)等方面在技术上基本与国外保持同步发展的水平。
以CORBA技术为例,
国防科技大学与中创
软件以
对象管理组织发布的CORBA及MDA标准体系为依据,并结合J2EE、XML、Web Service等标准,对ORB、CORBA 构件模型及其运行支撑技术、企业协同框架(CCA)、EAI Profile等进行了深入的研究,近3年在国内一级刊物和国际会议上发表50多篇文章,向对象管理组织(OMG)提交9项标准提案,已经从标准跟从阶段进入参与阶段,研究论文和成果在国际上得到广泛引用,国防科技大学CORBA研究成果StarBus并获得国家科技进步二等奖。
产品与市场现状
中间件作为基础
软件的重要组成,已与操作系统、
数据库齐头并进,在世界范围内呈现出迅猛发展的势头,已经形成一个巨大的产业。中间件在国内整个
软件行业中应该是发展速度最快的市场之一。中国
软件产业经过20年的发展,很多部门的信息化建设都走过了关键业务应用和部门级应用的阶段,现在开始向企业级应用转变。所谓企业级应用,最为人们所重视的就是各类信息资源之间如何关联、整合、协同、互动和按需服务,这些都是中间件能够发挥巨大作用的空间所在。当然,中国
软件产业整体上还比较弱,整个社会信息化的程度无论在广度、深度方面都还不够,这些自然也限制了国内软件产业及中间件的市场规模。随着国家信息化建设的不断深入,社会对
应用软件,特别是对网络应用起支撑作用的中间件产品的巨大需求是不争的事实,国内中间件的市场才刚刚开始启动,存在巨大的发展机会和空间。
网络应用中间件逐渐在基础中间件、应用中间件、应用框架等三个层面形成激烈的产品竞争和市场竞争格局。从三个方面的产品来分析,国外厂商仍然占主导地位,主流厂商包括IBM,BEA,ORACLE,HP,Iona等,而一些新型的中间件公司,如Tibco,webMethod,Vitria也开始携其
应用集成中间件或
业务流程管理中间件进入
中国市场。而国内一些规模较大的
软件公司也开始进入此领域,形成了包括中创软件商用中间件、
金蝶Apusic、
东方通科技、
中关村科技、北京汇金科技、中和威等在内的一批中间件专业厂商,东软、用友、信雅达等应用集成商也大量投入中间件产品的研发,国产中间件已经形成了比较完整产品体系,例如,中创软件、中和威推出了基于CORBA标准的
通信中间件产品;中创软件、
金蝶软件、东方通技、北京汇金科技等公司分别推出了遵循J2EE规范的应用服务器产品;中创软件、
中科院软件所、东方通科技、北京汇金科技推出了
消息中间件产品;中创软件推出了符合OMG标准的企业应用集成套件InforEAI;此外,还有大量的公司投入到中间件开发平台和
构件库的建设中。国产中间件已经广泛成功应用于我国政府、交通、金融、证券、保险、税务、电信、移动、教育、军事等行业或领域的信息化建设,并成为大型应用系统建设不可缺少的一环。
同国外厂商比较,国内中间件厂商的整体实力还存在很大的差距。如果仅仅从产品的功能上看,我们似乎并不比别人缺什么,但围绕中间件产品从研发到成功应用的全周期来看,我们还缺很多东西,暂时也很难对国外产品形成真正的竞争威胁。应该说国内中间件产品的成熟度应该是没有问题的,但要市场普遍接受国产中间件产品,却还有一个相当长的过程。以中创
软件Infor系列中间件为例,我们提供的产品可在各类主流操作系统平台和主流
数据库上稳定可靠地运行,并可与通行的各种
开发工具紧密融合,产品都具备丰富的
系统管理功能,并已经在大量行业中获得了成功应用经验,即使如此,要真正形成具有号召力的中间件品牌,还有艰巨的路需要一步步去走。同国外优秀中间件产品相比,我们还有大量需要借鉴和学习的地方,例如在产品的发展方向把握、持续开发能力、产品化工作、市场运作等方面,我们都还要继续加强,不断完善。当然,国内中间件厂商及其产品也具有非常明显的优势,我们贴近国家信息化的
现实需求,已经积累了丰富的领域问题和中间件应用经验,我们的中间件产品可以在实用性和易用性方面更加贴近本地化市场需求,在技术支持和服务方面也具有相当的优势。
5分类编辑
中间件所包括的范围十分广泛,针对不同的应用需求涌现出多种各具特色的中间件产品。但至今中间件还没有一个比较精确的定义,因此,在不同的角度或不同的层次上,对中间件的分类也会有所不同。由于中间件需要屏蔽分布环境中异构的操作系统和网络协议,它必须能够提供分布环境下的通讯服务,我们将这种通讯服务称之为平台。基于目的和实现机制的不同,我们将平台分为以下主要几类:
远程过程调用中间件(Remote Procedure Call)
面向消息的中间件(MesSAge-Oriented Middleware)
对象请求代理中间件(object RequeST Brokers)
它们可向上提供不同形式的通讯服务,包括同步、排队、订阅发布、广播等等,在这些基本的通讯平台之上,可构筑各种
框架,为应用程序提供不同领域内的服务,如事务处理
监控器、分布数据访问、对象事务管理器OTM等。平台为上层应用屏蔽了异构平台的差异,而其上的框架又定义了相应领域内的应用的系统结构、标准的服务组件等,用户只需告诉框架所关心的事件,然后提供处理这些事件的代码。当事件发生时,框架则会调用用户的代码。用户代码不用调用
框架,用户程序也不必关心框架结构、执行流程、对系统级API的调用等,所有这些由框架负责完成。因此,基于中间件开发的应用具有良好的可扩充性、易管理性、高可用性和可移植性。
远程过程调用
远程过程调用是一种广泛使用的
分布式应用程序处理方法。一个应用程序使用RPC来“远程”执行一个位于不同
地址空间里的过程,并且从效果上看和执行本地调用相同。事实上,一个RPC应用分为两个部分:server和Client。server提供一个或多个远程过程;client向server发出远程调用。server和client可以位于同一台计算机,也可以位于不同的计算机,甚至运行在不同的操作系统之上。它们通过网络进行通讯。相应的stub和运行支持提供数据转换和通讯服务,从而屏蔽不同的操作系统和网络协议。在这里RPC通讯是同步的。采用
线程可以进行
异步调用。
在RPC模型中,client和server只要具备了相应的RPC接口,并且具有RPC运行支持,就可以完成相应的互操作,而不必限制于特定的server。因此,RPC为client/server
分布式计算提供了有力的支持。同时,
远程过程调用RPC所提供的是基于过程的服务访问,client与server进行直接连接,没有中间机构来处理请求,因此也具有一定的局限性。比如,RPC通常需要一些网络细节以定位server;在client发出请求的同时,要求server必须是活动的等等。
面向消息的中间件
MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行
分布式系统的集成。通过提供消息传递和消息排队模型,它可在分布环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、
硬件和
软件平台。流行的MOM中间件产品有IBM的MQSeries、BEA的MessageQ等。消息传递和排队技术有以下三个主要特点:
1、通讯程序可在不同的时间运行
程序不在网络上直接相互通话,而是间接地将消息放入
消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,
目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。
2、对应用程序的结构没有约束
在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。
3、程序与网络复杂性相隔离
程序将消息放入
消息队列或从消息队列中取出消息来进行通讯,与此关联的全部活动,比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是MOM的任务,程序不直接与其它程序通话,并且它们不涉及网络通讯的复杂性。
对象请求代理
随着
对象技术与
分布式计算技术的发展,两者相互结合形成了分布对象计算,并发展为当今
软件技术的主流方向。1990年底,
对象管理集团OMG首次推出对象管理结构OMA(ObjECt Management Architecture),对象请求代理(Object Request Broker)是这个模型的核心组件。它的作用在于提供一个通信框架,透明地在异构的
分布计算环境中传递
对象请求。CORBA规范包括了ORB的所有标准接口。1991年推出的CORBA 1.1 定义了接口描述语言OMG IDL和支持
Client/Server
对象在具体的ORB上进行互操作的API。CORBA 2.0 规范描述的是不同厂商提供的ORB之间的互操作。
对象请求代理(ORB)是对象
总线,它在CORBA规范中处于核心地位,定义异构环境下对象透明地发送请求和接收响应的基本机制,是建立对象之间client/server关系的中间件。ORB使得
对象可以透明地向其他对象发出请求或接受其他对象的响应,这些对象可以位于本地也可以位于远程机器。ORB拦截请求调用,并负责找到可以实现请求的对象、传送
参数、调用相应的方法、返回结果等。client
对象并不知道同server对象通讯、激活或存储server对象的机制,也不必知道server对象位于何处、它是用何种语言实现的、使用什么操作系统或其他不属于对象接口的系统成分。
值得指出的是client和server角色只是用来协调
对象之间的相互作用,根据相应的场合,ORB上的对象可以是client,也可以是server,甚至兼有两者。当
对象发出一个请求时,它是处于client角色;当它在接收请求时,它就处于server角色。大部分的
对象都是既扮演client角色又扮演server角色。另外由于ORB负责
对象请求的传送和server的管理,client和server之间并不直接连接,因此,与RPC所支持的单纯的Client/Server结构相比,ORB可以支持更加复杂的结构。
事务处理监控
事务处理监控(Transaction processing monitors)最早出现在
大型机上,为其提供支持大规模事务处理的可靠运行环境。随着
分布计算技术的发展,分布应用系统对大规模的事务处理提出了需求,比如商业活动中大量的关键事务处理。事务处理监控界于client和server之间,进行事务管理与协调、
负载平衡、失败恢复等,以提高系统的整体性能。它可以被看作是事务处理应用程序的“操作系统”。总体上来说,事务处理监控有以下功能:
进程管理,包括启动server进程、为其分配任务、监控其执行并对负载进行平衡。
事务管理,即保证在其监控下的事务处理的原子性、一致性、独立性和持久性。
通讯管理,为client和server之间提供了多种通讯机制,包括请求响应、会话、排队、订阅发布和广播等。
事务处理监控能够为大量的client提供服务,比如飞机定票系统。如果server为每一个client都分配其所需要的资源的话,那server将不堪重负(如图2所示)。但实际上,在同一时刻并不是所有的client都需要请求服务,而一旦某个client请求了服务,它希望得到快速的响应。事务处理监控在操作系统之上提供一组服务,对client请求进行管理并为其分配相应的服务进程,使server在有限的
系统资源下能够高效地为大规模的客户提供服务。
6趋势展望编辑
趋势特征
中间件技术的发展方向,将聚焦于消除信息孤岛,推动无边界信息流,支撑开放、动态、多变的互联网环境中的复杂应用系统,实现对分布于互联网之上的各种自治信息资源(计算资源、数据资源、服务资源、
软件资源)的简单、标准、快速、灵活、可信、高效能及低成本的集成、协同和综合利用,提高组织的IT基础设施的业务敏捷性,降低总体运维成本,促进IT与业务之间的匹配。
中间件技术正在呈现出业务化、服务化、一体化、虚拟化等诸多新的重要发展趋势。
需求发展
由于网络世界是开放的、可成长的和多变的,分布性、自治性、异构性已经成为
信息系统的固有特征。实现
信息系统的综合集成,已经成为国家信息化建设的普遍需求,并直接反映了整个国家信息化建设的水平,中间件通过网络互连、
数据集成、应用整合、流程衔接、用户互动等形式,已经成为大型网络应用系统开发、集成、部署、运行与管理的关键
支撑软件。
随着中间件在我国信息化建设中的广泛应用,中间件应用需求也表现出一些新的特点:
可成长性
Internet是无边界的,中间件必须支持建立在Internet之上的网络应用系统的生长与代谢,维护相对稳定的应用视图
适应性
环境和应用需求不断变化,应用系统需要不断演进,作为企业计算的基础设施,中间件需要感知、适应变化,提供对下列环境的支持:
■ 支持移动、无线环境下的分布应用,适应多样性的设备特性以及不断变化的网络环境
■ 支持
流媒体应用,适应不断变化的访问流量和带宽约束
■ 在DRE(DIstributed Real-time Enbeded)环境下,适应强QoS的分布应用的软
硬件约束
■ 能适应未来还未确定的应用要求
可管理性
领域问题越来越复杂、IT应用系统越来越庞大,其自身管理维护则变得越来越复杂,中间件必须具有自主管理能力,简化系统管理成本。
■ 面对新的应用目标和变化的环境,支持复杂应用系统的自主再配置
■ 支持复杂应用系统的自我诊断和恢复
■ 支持复杂应用系统的自主优化
■ 支持复杂应用系统的自主防护
高可用性
提供安全、可信任的
信息服务
■ 支持大规模的并发客户访问
■ 提供99.99%以上的系统可用性
■ 提供安全、可信任的信息服务
负载均衡
■负载均衡是当一个应用的负载过大,超出自己的负载,就会把相应的进程分发给与之共同承担任务的服务器,从而不影响应用进程的运行。
■大多数中间件都支持负载均衡,实现负载均衡大大降低了系统的崩溃现象,从而减少对企业带来的损失。
[1]