1、中间件的概念
随着计算机技术的飞速发展,各种各样的应用软件需要在各种平台之间进行移植,或者一个平台需要支持多种应用软件和管理多种应用系统,软、硬件平台和应用系统之间需要可靠和高效的数据传递或转换,使系统的协同性得以保证。
这些,都需要一种构筑于软、硬件平台之上,同时对更上层的应用软件提供支持的软件系统,而中间件正是在这个环境下应孕而生。
由于中间件技术正处于发展过程之中,因此目前尚不能对它进行精确的定义。
比较流行的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算资源和网络通讯。
从中间件的定义可以看出,中间件是一类软件,而非一种软件 ;中间件不仅仅实现互连,还要实现应用之间的互操作 ;中间件是基于分布式处理的软件,定义中特别强调了其网络通讯功能。
2、中间件特点及优势
通常意义下,中间件应具有以下的一些特点 :满足大量应用的需要 ;运行于多种硬件和OS平台 ;支持分布式计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互功能 ;支持标准的协议 ;支持标准的接口。
程序员通过调用中间件提供的大量API,实现异构环境的通讯,从而屏蔽异构系统中复杂的操作系统和网络协议。
中间件提供客户机与服务器之间的连接服务,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。
由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。
中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件软件管理着客户端程序和数据库或者早期应用软件之间的通讯。
中间件在分布式的客户和服务之间扮演着承上启下的角色,如事务管理、负载均衡以及基于Web的计算等。
利用这些技术有助于减轻应用软件开发者的负担,使他们利用现有的硬件设备、操作系统、网络、数据库管理系统以及对象模型创建分布式应用软件时更加得心应手。由于中间件能够保护企业的投资,保证应用软件的相对稳定,实现应用软件的功能扩展 ;同时中间件产品在很大程度上简化了一个由不同硬件构成的分布式处理环境的复杂性,所以它的出现正日益引起用户的关注。
世界著名的咨询机构The Standish Group 在一份研究报告中归纳了中间件的十大优越性:
(1) 应用开发:The Standish Group 分析了100个关键应用系统中的业务逻辑程序、应用逻辑程序及基础程序所占的比例;业务逻辑程序和应用逻辑程序仅占总程序量的30%,而基础程序占了70%,使用传统意义上的中间件一项就可以节省25%~60%的应用开发费用。如是以新一代的中间件系列产品来组合应用,同时配合以可复用的商务对象构件,则应用开发费用可节省至80%。
(2) 系统运行:没有使用中间件的应用系统,其初期的资金及运行费用的投入要比同规模的使用中间件的应用系统多一倍。
(3) 开发周期:基础软件的开发是一件耗时的工作,若使用标准商业中间件则可缩短开发周期50%~75%。
(4) 减少项目开发风险:研究表明,没有使用标准商业中间件的关键应用系统开发项目的失败率高于90%。企业自己开发内置的基础(中间件)软件是得不偿失的,项目总的开支至少要翻一倍,甚至会十几倍。
(5) 合理运用资金:借助标准的商业中间件,企业可以很容易地在现有或遗留系统之上或之外增加新的功能模块,并将它们与原有统无缝集合。依靠标准的中间件,可以将老的系统改头换面成新潮的Internet/Intranet 应用系统。
(6) 应用集合:依靠标准的中间件可以将现有的应用、新的应用和购买的商务构件融合在一起进行应用集合。
(7) 系统维护:需要一提的是,基础(中间件)软件的自我开发是要付出很高代价的,此外,每年维护自我开发的基础(中间件)软件的开支则需要当初开发费用的15%~25%,每年应用程序的维护开支也还需要当初项目总费用的10%~20%左右。而在一般情况下,购买标准商业中间件每年只需付出产品价格的15%~20%的维护费,当然,中间件产品的具体价格要依据产品购买数量及哪一家厂商而定。
(8) 质量:基于企业自我建造的基础(中间件)软件平台上的应用系统,每增加一个新的模块,就要相应地在基础(中间件)软件之上进行改动。而标准的中间件在接口方面都是清晰和规范的。标准中间件的规范化模块可以有效地保证应用系统质量及减少新旧系统维护开支。
(9) 技术革新:企业对自我建造的基础(中间件)软件平台的频繁革新是极不容易实现的(不实际的)。而购买标准的商业中间件,则对技术的发展与变化可以放心,中间件厂商会责无旁贷地把握技术方向和进行技术革新。
(10) 增加产品吸引力:不同的商业中间件提供不同的功能模型,合理使用,可以让你的应用更容易增添新的表现形式与新的服务项目。从另一个角度看,可靠的商业中间件也使得企业的应用系统更完善,更出众。
具体地说,中间件屏蔽了低层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。
中间件带给应用系统的不只是开发的简单、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。The Standish Group 的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT厂商,IT用户同样是赢家,并且是更有把握的赢家。
中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,在技术不断发展之后,使以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、财力投入。
3、中间件的应用领域与分类
随着计算机软件技术的发展,中间件技术也已经日渐成熟,并且出现了不同层次、不同类型的中间件产品。按照IDC的分类方法,中间件可分为六类。分别是数据访问中间件、远程过程调用中间件、消息中间件、交易中间件、对象中间件等。
数据访问中间件:是为了建立数据应用资源互操作的模式,对异构环境下的数据库实现联接或文件系统实现联接的中间件;
远程过程调用中间件:通过这种远程过程调用机制,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程;
消息中间件:用来屏蔽掉各种平台及协议之间的特性,进行相互通信,实现应用程序之间的协同;
交易中间件:是在分布、异构环境下提供保证交易完整性和数据完整性的一种环境平台;
对象中间件:在分布、异构的网络计算环境中,可以将各种分布对象有机地结合在一起,完成系统的快速集成,实现对象重用。
目前国内外有不少厂商都开发出自己的中间件产品,其中有全球最大的独立中间件厂商BEA公司,还有像IBM、Oracle和Microsoft、HP、Sun等大厂商也早已涉足电子商务中间件。
面向对象的中间件是对象技术和分布式计算发展的产物,业界普遍认为面向对象是今后中间件发展的主流方向,它提供一种通讯机制,透明地在异构的分布计算环境中传递对象请求,而这些对象可以位于本地或者远程机器。
面向对象标准原本只有一个,即CORBA(公共对象请求代理体系结构),该标准由包括BEA、IBM、Oracle、Sun和Sybase等公司在内的众多厂商一起制定,从而形成了一个庞大的CORBA联盟势力。后来,Sun推出了企业级JavaBeans(EJB),用自己易使用的程序模型来对CORBA做出了改进。微软COM(Component Object Model,组件对象模型)的出现,使面向对象中间件市场里又多了一个标准,这样,面向对象中间件产品实际上形成了两大标准,一是微软的COM,一是JavaBeans。
从宏观上看,中间件可以分为3大类:
数据类:用于数据的存取、利用和增值,此类中间件用于构建以数据为中心的应用
处理类:把分布在网络结点上的各个应用或处理连接在一起,形成一个统一的分布式应用。
分布式构件类:支持构件式应用,未来应用的发展方向,目前竞争激烈。
为了更加清晰起见,我们把中间件细分为12种,如下表:
序号 | 种类 | 优劣 | 产品 |
1 | 数据库系统的产品 管理数据库连接,抽象网络协议。一般由数据库厂商或支持多数据库的中间件提供 | 数据库厂商的产品功能较强、性能较好。而独立于数据库厂商的产品在用于多数据库环境时效率有所降低 | Oracle Net8Sybase Netlib,Protocol services Intersolv SequeLink client |
2 | 数据库存取APIs 支持对数据库存取的编程,可以使用存储过程。OO数据库常为OO编程语言,如Java/C++提供适应ODMG的接口 |
数据库厂商的APIs可支持对数据库所有功能的存取,因而适合编写OLTP的应用。而ODBC或JDBC更适合多数据库的环境 |
IBM DB2 CLIOracle Net8,Call InterfaceMicrosoft ODBC,OLE DBODI’s PSE |
3 | 数据迁移、转换 用于数据部署、转换、信息增值。常作为数据仓库解决方案的一部分 |
使完全不同的数据包和遗留的应用能协同工作,但需要建立诸如时间、数据优选和整合、以及资源等要素 | IBM Data PropagatorSybase Replication ServerPlatinum InfoPumpD2K Tapestry |
4 | 底层的同步服务(RPC) 使调用远端的过程和在本地一样。在被调用的处理未完以前,调用进程处于阻塞状态 | 点但的代码抽象,只有在所有的Server 都是在线的情形才能工作。不适合移动或Internet应用 | DCE-RPC (微软把它用在DOM中)Borland EnteraNoblenet RPC |
5 | 简单的异步消息 简单是消息发送和接收,有时扩展到可靠投递、智能路由和名字服务 | 对需要高性能的异步通讯的应用非常有用。但需要所有的Server 都在线 | Peerlogic PipesMomentum XIPC东方通科技TongLINK |
6 | 应用级的消息队列 是简单的消息中间件的扩展,增加了队列、脱机处理能力、可靠投递和发布订阅等功能 |
使分布式处理可以在脱机、事件驱动等的方式,适合与电子商务、移动用户、工作流或其他的环境中 |
TIBCO RendenousIBM MQ SeriesMS Message QueueLevel8 FalconMQ东方通科技 TongLINK/Q清华北美 TH - MT |
7 | 应用协调器 通常是应用级消息队列的扩展,增加了许多工具用于建立适合事件服务的集成应用 |
有效地节约集成的时间特别是针对应用包或工作流产品 |
Vitria VelocitiActive Software,ActiveWebOberon ProsperpNEON NEONetTSI Mercator |
8 | COM+/DNA 微软的分布式构件平台,使企业应用更加可扩充和可管理 | 从COM发展而来,是构件市场上的主流产品。尚需要增加针对企业应用的可靠性 | MS,COM,DCOM,COM+MS MTSMessage Queue ServerActiveDirectory(future) |
9 | CORBA 平台 OMG 标准,通过ORB 把分布的对象连接成一个逻辑上统一的整体 | 工业组织的标准,可用不同的方式实现,以提高互操作能力 | Iona OrbixBorland/Visigenic,VisibrokerIBM ComponentBrokerBEA Iceberg东方通科技 TongBroker |
10 | 交易监控器 用于开发实时的OLTP应用的服务器和API,用于管理交易,共享资源 |
已证明是建造OLTP应用的有效手段。通常是非面向对象的,带有特有和复杂的API | BEA TUXEDOIBM TX 系列东方通科技 TongEASY清华北美 JavaST |
11 | 应用服务器 针对Internet、Intranet和其他分布式构件应用,提供服务方构件的完整环境 | 与交易监控器类似,只不过是面向对象的、支持构件、具有标准API | NetDynamicsIBM Compont – BrokerNetscape KivaOracle App. Ser东方通科技 TongWEB清华北美 WebFirst |
12 | 工作流/应用集成 大杂烩,把工作流和应用开发技术如消息及分布式构件结合在一起 | 使处理能方便自动地和构件、Script 应用、工作流行为结合在一起,同时集成文档和电子邮件 | LSS FlowmanIBM FlowmarkAction,Technologies,ActionWorksVitria Business Agiliti |