中间件技术简介

来源:互联网 发布:杜老师的c编程 编辑:程序博客网 时间:2024/05/22 12:52

什么是中间件

        随着计算机技术的发展,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)

将数据从一个应用程序发送到另一个应用程序,这就是消息中间件的主要功能。    它要负责建立网络通信的通道,进行数据的可靠传送。保证数据不重发,不丢失,消息中间件的一个重要作用是可以实现跨平台操作,为不同操作系统上的应用软件集成提供数据传送服务。它适用于进行非实时的数据交换,如银行间结算数据的传送.主要的产品有:IBMMQSeries BEA MessageQ BEA Tuxedo /Q  MicroSoft MSMQ 东方通科技tonglink/q。

 

交易中间件(Transaction Processing: TP)

交易中间件也和消息中间件一样具有跨平台,跨网络的能力,但它的主要功能是管理分布于不同计算机上的数据的一致性,协调数据库处理分布式事务,保障整个系统的性能和可靠性。交易中间件所遵循的主要标准是x/open dtp模型。它适用于联机交易处理系统,如银行的ATM系统,电信的计费营收系统.主要产品有:BEA TUXEDO, IBM CICS,东方通科技tongeasy

 

对象中间件(Object Momitor)  

对象中间件也叫ObjectTP Momitor,它一般也具有交易中间件的功能,但它是按面向对象的模式来组织体系结构的,在线的电子交易很适合采用这种中间件类型.因为这种类型的应用会被频繁的修改,面向对象的体系结构可以保持足够的弹性来应付这种改动.提到面向对象的中间件,就不得不提到对象请求代理(Object Request Brokers:ORBs),现在有3种对象请求代理体系结构

,CORBA,EJB,COM+,ORBs是一组协议或是标准,现在的对象中间件都是按照上面三种体系结构的某一种来构造的.如: Borland VisiBroker,MicroSoftTransaction Server,IONA orbix,IBM componentbroker,东方通科技tongbroker

 

应用服务器(Application Server)

应用服务器主要用来构造基于WEB的应用,是企业实施电子商务的基础平台。它一般是基于J2EE体系结构。让网络应用的开发、部署、管理变得更加容易。使开发人员专注于业务逻辑。主要的产品有BEA weblogic IBMwebspere,Borland AppServer等,还有一些开放源代码的J2EE应用服务器,如JBOSS等.

 

企业级应用集成(Enterprise Application Intergration : EAI)

一个大型企业内部往往有很多的计算机应用系统,EAI可用于对这些系统进行有效的整合。使它们之间能够互相访问,实现互操作。EAI所提供的上层开发工具或许是EAI和其他中间件最大的区别,它允许用户自定义商业逻辑和自动使数据对象符合这些规则.EAI的典型用户是那些巨型企业的大量应用系统的整合,主要的产品有BEA ELINK, BEA WLI等.

 

安全中间件(Security Middlewares)

近几年,随着互联网的发展,信息安全越来越受到普遍关注,安全中间件也应运而生。

安全中间件是以公钥基础设施(PKI)为核心的、建立在一系列相关国际安全标准之上的一个开放式应用开发平台,向上为应用系统提供开发接口,向下提供统一的密码算法接口及各种ic卡、安全芯片等设备的驱动接口。主要产品有:ENTRUST entrus,东方通科技tongsec等。

 

上面对中间件的分类描述并不是一个很严格的定义,只是一个大致的划分,中间件是一个快速发展的技术,市场越来越大,除了上面提大的大型厂商提供的通用产品,还有很多小公司专注于专有的领域,为客户提供面向某一领域,更加符合客户需求的中间件产品.如: 清华北美的THMT,JAVATS,青牛公司的CT-USE等。

 

使用中间件带来的好处

世界著名的咨询机构Standish Group在一份研究报告中归纳了中间件的十大优越性:

1.  缩短投放市场所需时间-时间因素绝对是所有项目的首要问题。自行建立软件基础结构耗时长,使用现成的基础结构软件则可以将软件开发时间缩短 25%-50%。如果应用系统每月可带来100万美元的利润或节省100 万美元的开销,那么软件开发时间缩短的每一个月就相当于在银行存入100 万美元。

2.  节省应用开发费用-Standish组织调查100 个关键任务应用系统,对其编码中的业务/应用部分的代码量和基础结构部分的代码量进行评估。结果表明:只有少于30% 的代码与应用/业务有关,而其余部分均归属于基础结构!如果使用现成的基础结构,费用可节省25%-60%。对于一个200万美元的项目而言,这意味着将节省50万-120万美元。

3.  减少系统运行开销-一个不采用商用中间件产品部署的系统,其初期购买及运行费用将加倍。许多大企业由于采用中间件产品而在硬件及软件方面节省了大量的投资。一个 200 万美元的项目因此将只需花费100 万,而其中还包括了中间件的投资。

4.  降低失败率-Standish市场组织对项目失败的定义为项目被取消或没有完成预期的预算、交付使用时间以及业务要求等目标。调查表明自行开发中间件的项目失败率高达 90% 以上,可见这种做法是十分危险 的。其结果可能由100%推翻重来,以至于1000%超出预算。

5.  提高投资效率-采用中间件产品既能保护现有投资,又能提高投资效率。通过使用中间件产品,用户可以建立专有系统以外的应用程序,不但扩展了主机应用,而且还能将主机应用与整体系统实现无缝连接。许多企业发现其在两层客户机 / 服务器结构下建立的新 的应用系统并不能在 Internet上运行,而已被淘汰的应用程序则更适合 Internet。采用中间件技术可以恢复被 Internet淘汰 的应用程序的生命,该费用将大大低于应用程序重新开发的费用。这笔费用通常会在数十万美元到数亿美元之间。

6.  简化应用集成-使用中间件产品,现有应用程序、新开发应用程序以及所有其他购买软件均能实现无缝集成。从而能够从开发、投放市场时间两方面节约数百万美元的开支。

7.  降低软件维护费用-自行开发基础结构成本很高,维护时则更会变本加厉。对于自行开发的基础结构,其年维护费可达开发费用的15%-25%;而应用程序的维护费则达到开发费用的10%-20%。以一个200 万美元的项目为例,其中120万用于基础结构建立,其年维护费为18万-28万美元。而购买现成的中间件仅需项目总成本的15%-20%,依购买规模和供应商的不同还有可能大大低于该价格。

8.  高质量-在自行建立中间件的应用系统中,每次将新的应用组件加入系统时,相应的新的中间件模块被加入到当前的中间件之上。在一 个实际的应用系统中, Standish集团发现其使用了17000 个应用接口。而商用中间件产品则具有清晰的接口层次,从而大大降低新系统及原有系统的维护成本。此外,由于商用中间件支持数百万的交易吞吐量,其质量远远高于用户自行开发的中间件产品。

9.  保证技术革新-除了需对自行建立的中间件进行维护,还需对其进行技术革新,而这似乎不太现实。而从第三方购买的中间件产品则会随着其所属公司对其进一步的投资不端得到增强。采用具有层次接口设计的中间件产品,将能节省时间和费用。

10. 增强应用程序吸引力-由于中间件提供了一个灵活的平台,许多新功能、新特性均可以在应用系统中得以建立。

 

中间件的市场前景

据IDC预测:到2002年全球中间件市场销售额将达到80亿美元;建立在中间件基础上的通用组件销售额也会增加至70亿美元。在中国,1998年中间件市场总值达12.34亿美元; 1999年为17亿美元; 到2004年将达到90.3亿美元,年增长率为39.7%,远远高于软件业的平均增长水平。


原创粉丝点击