这两天看了关于中间件的一些文档,总结了一下:
1、何为中间件?
顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
   IDC定义:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
   IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能
   中间件的核心目的:
                通过屏蔽各种复杂的技术细节使技术问题简单化
他是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件软件管理着客户端程序和数据库或者早期应用软件之间的通讯。
在分布式的客户和服务之间扮演着承上启下的角色,如:事务管理;负载均衡;基于Web的计算等。
具有以下的一些特点:
    满足大量应用的需要;
    运行于多种硬件和OS平台;
    支持分布式计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互功能;
    支持标准的协议;
    支持标准的接口

2、产品的发展及分类

最早具有中间件技术思想及功能的软件是IBM的CICS,但由于CICS不是分布式环境的产物,因此人们一般把Tuxedo作为第一个严格意义上的中间件产品。Tuxedo是1984年在当时属于AT&&t贝尔实验室开发完成的,但由于分布式处理当时并没有在商业应用上获得像今天一样的成功,Tuxedo在很长一段时期里只是实验室产品,后来被Novell收购,在经过Novell并不成功的商业推广之后,1995年被现在的BEA公司收购。尽管中间件的概念很早就已经产生,但中间件技术的广泛运用却是在最近10年之中。BEA公司1995年成立后收购Tuxedo才成为一个真正的中间件厂商,IBM的中间件MQSeries也是90年代的产品,其它许多中间件产品也都是最近几年才成熟起来。国内在中间件领域的起步阶段正是整个世界范围内中间件的初创时期。东方通科技早在1992年就开始中间件的研究与开发,1993年推出第一个产品TongLINK/Q。可以说,在中间件领域国内的起步时间并不比国外晚多少。
按照IDC的分类方法,中间件可分为6类:

1).终端仿真/屏幕转换中间件
   用以实现客户机图形用户接口与已有的字符接口方式的服务器应用程序之间的互操作。

2).数据访问中间件
  适用于应用程序与数据源之间的互操作模型,客户端使用面向数据库的API,以提请直接访问和更新基于服务器的数据源,数据源可以是关系型、非关系型和对象型。

3).远程过程调用中间件
 基于RPC机制,该机制是早期开发分布式应用时经常采用的一种同步式的请求应答协议。通过这种协议,程序员编写客户方的应用,需要时可以调用位于远端服务器上的过程。

4 )消息中间件 Message Oriented Middleware
越来越多的分布式应用采用消息中间件来构建,并通过消息中间件把应用扩展到不同的操作系统和不同的网络环境。基于消息的机制更多地适用于事件驱动的应用,当一个事件发生时,消息中间件可通知服务方进行何种操作。
Java消息传输服务(JMS),算是规范。
适用于:非实时的数据交换,比如银行间结算数据传送。
主要产品: IBM MQSeries、 BEA MessageQ和Tuxedo/Q,东方通Tong/Link/Q

5) 交易中间件 Transaction Processing-- TP
交易中间件是专门针对联机交易处理系统而设计的。通过两个阶段提交协议等方式,可保证分布式交易的完整性、控制并发、实现交易路由和均衡负载。
交易中间件标准: X/Open DTP模型,X/OPEN(现称为OPENGROUP)的分布式事务处理系列规范。 JTA,
适用于:联机交易处理系统,比如银行的ATM系统、电信的计费营收系统。
主要产品: BEA Tuxedo, IBM CICS, MS Transaction Server,东方通 TongEasy。

6)对象中间件 Object Monitor
面向对象的技术一直是软件界努力追求的目标,传统的对象技术通过封装、继承及多态提供了良好的代码重用功能。但这些对象只存在于一个程序中,外面的世界并不知道它们的存在,也无法访问它们。面向对象的中间件就是要解决这些问题,它提供一个标准的构件框架,能使不同厂家的软件通过不同的地址空间、网络和操作系统互相交互访问。该构件的具体实现、位置及所依附的操作系统,对客户来说都是透明的。
面向对象标准原本只有一个,即CORBA(公共对象请求代理体系结构),该标准由包括BEA、 IBM、Oracle、Sun和Sybase等公司在内的众多厂商一起制定,从而形成了一个庞大的CORBA联盟势力。后来,Sun推出了企业级 JavaBeans(EJB),用自己易使用的程序模型来对CORBA做出了改进。微软COM(Component Object Model,组件对象模型)的出现,使面向对象中间件市场里又多了一个标准,这样,面向对象中间件产品实际上形成了两大标准,一是微软的COM,一是JavaBeans。


3、中间件解决什么问题
世界著名的咨询机构Standish Group在一份研究报告中归纳了中间件的十大优越性:

缩短应用的开发周期

节约应用的开发成本

减少系统初期的建设成本

降低应用开发的失败率

保护已有的投资

简化应用集成

减少维护费用

提高应用的开发质量

保证技术进步的连续性

增强应用的生命力

具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上,不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负担。

中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。Standish的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只是IT 厂商,IT用户同样是赢家,并且是更有把握的赢家。

其次,中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操作系统、数据库管理系统本身做不了的。中间件的这一作用,使得在技术不断发展之后,我们以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、财力投入。