什么是中间件
随着计算机技术的发展,IT厂商出于商业和技术利益的考虑,各自产品之间形成了差异,技术在不断进步,但差异却并没有因此减少。计算机用户出于历史原因和降低风险的考虑,必然也无法避免多厂商产品并存的局面。 于是,如何屏蔽不同厂商产品之间的差异,如何减少应用软件开发与工作的复杂性,就成为技术不断进步之后,人们不能不面对的现实问题。 显然,由一个厂商去统一众多产品之间的差异是不可能的,而单独由计算机用户在自己的应用软件中去弥补其中的大片空档,由于技术深度和技术广度的要求,必然也是勉为其难。于是,中间件应运而生。中间件试图通过屏蔽各种复杂的技术细节使技术问题简单化。 在中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,这些都是计算机最底层的东西,越底层越复杂,开发者不得不面临许多很棘手的问题:
1. 一个应用系统可能跨越多种平台,如UNIX,NT,甚至大机,如何屏蔽这些平台之间的差异?
2. 如何处理复杂多变的网络环境,如何在脆弱的网络环境上实现可靠的数据传送?
3. 一笔交易可能会涉及多个数据库,如何保证数据的一致性和完整性?
4. 如何同时支持成千上万乃至更多用户的并发服务请求?
5. 如何提高系统的可靠性,实现故障自动恢复和故障迁移。保证系统7*24*52可用。
6. 如何解决与已有应用系统的接口。
这些与用户的业务没有直接关系,但又必须解决,耗费了大量有限的时间和精力。于是,有人提出能不能将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形成一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终构成了中间件这类的软件。
中间件(middleware)现在是与操作系统,数据库并列的3大基础软件之一,顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
在众多关于中间件的定义中,比较普遍被接受的是IDC的定义:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。 IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
最早具有中间件技术思想及功能的软件是IBM的CICS,但由于CICS不是分布式环境的产物,因此人们一般把
tuxedo作为第一个严格意义上的中间件产品。Tuxedo是1984年在当时属于AT&&T的贝尔实验室开发完成的,但由于分布式处理当时并没有在商业应用上获得像今天一样的成功,Tuxedo在很长一段时期里只是实验室产品,后来被Novell收购,在经过Novell并不成功的商业推广之后,1995年被现在的BEA公司收购。尽管中间件的概念很早就已经产生,但中间件技术的广泛运用却是在最近10年之中。BEA公司1995年成立后收购Tuxedo才成为一个真正的中间件厂商,IBM的中间件MQSeries也是90年代的产品,其它许多中间件产品也都是最近几年才成熟起来。国内在中间件领域的起步阶段正是整个世界范围内中间件的初创时期。东方通科技早在1992年就开始中间件的研究与开发,1993年推出第一个产品TongLINK/Q。可以说,在中间件领域国内的起步时间并不比国外晚多少。
中间件的作用:
具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。
中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。Standish的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT厂商,IT用户同样是赢家,并且是更有把握的赢家。
其次,中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,使得在技术不断发展之后,我们以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、财力投入。
中间件的分类:
中间件技术已经日渐成熟,并且出现了不同层次、不同类型的中间件产品。大致可分为以下几类:
消息中间件(Message Orient middleware: MOM)
将数据从一个应用程序发送到另一个应用程序,这就是消息中间件的主要功能。 它要负责建立网络通信的通道,进行数据的可靠传送。保证数据不重发,不丢失,消息中间件的一个重要作用是可以实现跨平台操作,为不同操作系统上的应用软件集成提供数据传送服务。它适用于进行非实时的数据交换,如银行间结算数据的传送.主要的产品有:IBM MQSeries、 BEA MessageQ、BEA Tuxedo /Q、MicroSoft MSMQ 、东方通科技tonglink/q。
交易中间件(Transaction Processing: TP)
交易中间件也和消息中间件一样具有跨平台,跨网络的能力,但它的主要功能是管理分布于不同计算机上的数据的一致性,协调数据库处理分布式事务,保障整个系统的性能和可靠性。交易中间件所遵循的主要标准是x/open dtp模型。它适用于联机交易处理系统,如银行的ATM系统,电信的计费营收系统.主要产品有:BEA TUXEDO, IBM CICS,东方通科技tongeasy
对象中间件(Object Momitor)
对象中间件也叫Object TP Momitor,它一般也具有交易中间件的功能,但它是按面向对象的模式来组织体系结构的,在线的电子交易很适合采用这种中间件类型.因为这种类型的应用会被频繁的修改,面向对象的体系结构可以保持足够的弹性来应付这种改动.提到面向对象的中间件,就不得不提到对象请求代理(Object Request Brokers: ORBs),现在有3种对象请求代理体系结构 ,CORBA、EJB、COM+、ORBs是一组协议或是标准,现在的对象中间件都是按照上面三种体系结构的某一种来构造的.如: Borland VisiBroker,MicroSoft Transaction Server,IONA orbix,IBM componentbroker,东方通科技tongbroker
应用服务器(Application Server)
应用服务器主要用来构造基于WEB的应用,是企业实施电子商务的基础平台。它一般是基于J2EE体系结构。让网络应用的开发、部署、管理变得更加容易。使开发��员专注于业务逻辑。主要的产品有BEA
WebLogic 、IBM webspere、Borland AppServer等,还有一些开放源代码的J2EE应用服务器,如JBOSS等.
企业级应用集成(Enterprise Application Intergration : EAI)
一个大型企业内部往往有很多的计算机应用系统,EAI可用于对这些系统进行有效的整合。使它们之间能够互相访问,实现互操作。EAI所提供的上层开发工具或许是EAI和其他中间件最大的区别,它允许用户自定义商业逻辑和自动使数据对象符合这些规则.EAI的典型用户是那些巨型企业的大量应用系统的整合等.
安全中间件
近几年,随着互联网的发展,信息安全越来越受到普遍关注,安全中间件也应运而生。
安全中间件是以公钥基础设施(PKI)为核心的、建立在一系列相关国际安全标准之上的一个开放式应用开发平台,向上为应用系统提供开发接口,向下提供统一的密码算法接口及各种ic卡、安全芯片等设备的驱动接口。等。
上面对中间件的分类描述并不是一个很严格的定义,只是一个大致的划分,中间件是一个快速发展的技术,市场越来越大,除了上面提大的大型厂商提供的通用产品,还有很多小公司专注于专有的领域,为客户提供面向某一领域,更加符合客户需求的中间件产品.如: 清华北美的THMT,JAVATS,青牛公司的CT-USE等。
使用中间件带来的好处
世界著名的咨询机构Standish Group在一份研究报告中归纳了中间件的十大优越性:
1. 缩短应用的开发周期
2. 节约应用的开发成本
3. 减少系统初期的建设成本
4. 降低应用开发的失败率
5. 保护已有的投资
6. 简化应用集成
7. 减少维护费用
8. 提高���用的开发质量
9. 保证技术进步的连续性
10. 增强应用的生命力