1.1中间件
中间件处于应用软件和系统软件之间,是一种以自己的复杂换取企业应用简单化的可复用的基础软件。在中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,开发者不得不面临许多很棘手的问题,如操作系统的多样性,繁杂的网络程序设计和管理,复杂多变的网络环境,数据分散处理带来的不一致性,性能和效率、安全问题等等。这些问题与用户的业务没有直接关系,但又必须解决,耗费了大量有限的时间和精力。于是,有人提出将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形成一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终形成为了中间件产品。
 
从技术上讲,中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。
 
1.1.1中间件的优点
  1?应用开发:The Standish Group分析了一百个关键应用系统中的业务逻辑程序、应用逻辑程序及基础程序所占的比例,发现了一个有趣的平均百分比,其中,业务逻辑程序、应用逻辑程序仅占总程序量的30%,而基础程序却占了70%!若是以新一代的中间件系列产品来组合应用,同时配合以可复用的商务对象构件,则应用开发费用可节省至80%。

  2?系统运行:没有使用中间件的应用系统,其初期投入的资金及运行费用要比同规模的使用中间件的应用系统多一倍。

  3?开发周期:时间限制是所有应用系统开发项目的天敌,而基础软件的开发又是一件极耗时的工作,若使用标准商业中间件则可缩短开发周期50-75%。

  4?减少项目开发风险:The Standish Group对项目失败的定义是:项目中途夭折、费用远远超过预算、无法准时完成项目和偏离既定的目标。研究表明,没有使用标准商业中间件的关键应用系统开发项目的失败率高于90%。而且,企业自己开发内置的基础(中间件)软件是得不偿失的,项目总的开支至少要翻一倍,甚至会十几倍。

  5?合理运用资金:借助标准的商业中间件,企业可以很容易地在现有或遗留系统之上或之外增加新的功能模块,并将它们与原有系统无缝集合。

  6?应用集合:依靠标准的中间件可以将现有的应用、新的应用和购买的商务构件融合在一起。

  7?系统维护:每年维护自我开发的基础(中间件)软件的开支是当初开发费用的15%至25%,每年应用程序的维护开支也还需要当初项目总费用的10%至20%。

  8?质量:基于企业自我建造的基础(中间件)软件平台上的应用系统,每增加一个新的模块,就要相应地在基础(中间件)软件之上进行改进。The Standish Group在调研过程中,曾在某个企业中的一个应用系统里,发现了有多达1万7千多个模块接口,而标准的中间件在接口方面都是清晰和规范的,可以有效地保证应用系统质量及减少新旧系统维护开支。

  9?技术革新:企业对自我建造的基础(中间件)软件平台的频繁革新是不容易实现的,也是不实际的,而购买标准的商业中间件,则对技术的发展与变化可以极大地增强其适应性。

  10?增加产品吸引力:不同的商业中间件提供有不同的功能模型,合理地使用,可以让用户的应用更容易增添新的表现形式与新的服务项目,从而使得企业的应用系统更完善、更出众。   
1.1.2中间件的分类
表1 中间件的产品分类情况

种类
作用
典型产品
消息中间件
适用于任何需要进行网络通信的系统,负责建立网络通信的通道,进行数据或文件发送。消息中间件的一个重要作用是可以实现跨平台操作,为不同操作系统上的应用软件集成提供服务。
IBM webSphere MQ
交易中间件
适用于联机交易处理系统,主要功能是管理分布于不同计算机上的数据的一致性,保障系统处理能力的效率与均衡负载。交易中间件所遵循的主要标准是 x/open DTP模型。
IBM CICS,Bea tuxedo
对象中间件
基于 corba标准的构件框架,相当于软总线,能使不同厂家的软件交互访问,为软件用户及开发者提供一种即插即用的互操作性,就像现在使用集成块和扩展板装配计算机一样。
IBM componentbroker, iona orbix,borland visibroker
应用服务器
用来构造 internet/intranet应用和其它分布式构件应用,是企业实施电子商务的基础设施。应用服务器一般是基于j2ee工业标准的。
IBM Websphere,
Bea weblogic
安全中间件
以公钥基础设施( pki)为核心的、建立在一系列相关国际安全标准之上的一个开放式应用开发平台,向上为应用系统提供开发接口,向下提供统一的密码算法接口及各种ic卡、安全芯片等设备的驱动接口。
entrust entrust
应用集成服务器
把工作流和应用开发技术如消息及分布式构件结合在一起,使处理能方便自动地和构件、 script
应用、工作流行为结合在一起,同时集成文档和电子邮件。
lss flowman
ibm flowmark
vitria businessagiliti

 
 
1.2三种通信技术的比较
      
(1)    CPI-C
CPI-C是一个同步的对话通信模式。参加通信的某一程序发起一次对话,并控制信息的流动,如图,1.2。发起者可随后向对方发送数据,而对方可接收数据,数据也可反向流动。参加通信的程序必须跟踪对话的状态,以备故障发生时作恢复连接用。在对话过程中两个程序都必须同时参加对话。如果由于某种原因造成连接断开,由连接建立者重建并恢复这次对话。这给应用程序增加了连接的负担。通信双方也可处于对等地位,在程序开始时确定了谁是对话的发起者,并保存下去,也可改变这种关系,但必须在该对话完成之后。这意味着CPI-C既支持客户——服务器环境也支持对等通信方式。   前面提到,CPI-C是一种同步通信模型,但在某些事务处理环境的支持下,CPI-C可以实现一定程度的异步,在CICS环境中这种支持是通过“临时数据队列”这种技术实现的。在这以前,只有SNA协议支持CPI-C,现在TCP/IP和SNA都支持CPI-C。 由于应用程序必须参与对错误的处理和恢复,所以CPI-C的编程接口相当复杂。
(2)RPC
       (RPC)远程过程调用也是一种同步的、对话方式的模型,如图1.3。一个调用程序向服务器提出申请,该调用被一个负责通信的转接器发向远端系统。调用者和被调用者关系是固定的,很难实现对等通信。和CPI-C一样,由应用程序处理错误,并且在申请的服务得到响应之前,服务申请者被阻塞。
(3)MQI(Message Queue Interface)
       如图1.4消息队列接口为程序提供了一种异步通信方式。一个程序以一个队列作为中转与另一个程序相互通信,这个队列相对于该程序而言既可是本地的也可以是远程的。当程序A需要和程序B通信时,A只需PUT一条消息到一个和B相联系的队列上,程序A然后可以干别的事。它似乎感觉不到通信的发生,通信以及对通信错误的恢复是由队列管理完成的。
 
       通信的方式和使用的传送协议无关。因为应用程序感觉不到通信的发生,因而可以使用各种标准协议,比如TCP/IP,SNA或者其他局域网协议。
       当程序A通过向某一队列PUT一条消息来申请程序B的服务时,程序B不一定必需在运行。而且一个程序可以通过向不同的队列PUT消息来实现与多个程序的通信。
 
 
最后,应该把MQI看作是其它通信方式所缺乏的功能的一个必要补充。每种通信方式都有其优点、缺点和适用范围。

       1.3   Websphere MQ 的原理         

  Websphere MQ 提供一个具有工业标准、安全、可靠的消息传输系统、它的功能是控制和管理集成的商业应用,使得组成这个商业应用的多个分支程序(模块)之间通过传递消息完成的整个工作流程。它基本由一个消息传输系统和一个应用程序接口组成,其资源是消息和队列(Messaging and Queuing)

      消息:消息就是一个信息单元,这个单元可以是一个请求(Request message),也可以是一个应答(Reply Message),或者是一个报告(Report Message)或一份报文(Datagram message)。一个消息包含两个因素--消息描述(用于定义诸如消息传输目标等)和数据消息(如应用程序数据或数据库查询等)。程序之间的通信通过传递消息而非直接调用程序。

  队列:一个安全的存储消息的地方,消息的存储一般是顺序的,队列是消息分阶段地传送和接收。因为消息存放在队列中,所以应用程序可以相互独立的运行,以不同的速度,在不同的时间,在不同的地点。

 消息传输系统:用于确保队列之间的消息提供,包括网络中不同系统上的远程队列之间的消息提供。并保证网络故障或关闭后的恢复。

   应用程序接口:应用程序和消息系统之间通过Websphere MQ API 实现的接口 Websphere MQ API在所有MQ平台上是一致的。API只有14个调用,2个关键动词:发送(PUT)和接收(GET)。