定义:
中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统和用户的应用软件的中间。
中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行和开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件,中间件是一类软件,中间件不仅要实现互联,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
软件复用:
最早的软件开发方法就是编程、写代码,其缺点在于无法复用,为此提出了构件化的软件开发方法,通过把编程中一些常用功能进行封装,并规范统一接口,供其它程序调用,例如我们开发一个新软件,可能要用到构件1、构件2、构件3,那么,我们只要对其进行本地组装,就可以得到我们想要的应用软件。但是,这种构件的重用任然是”代码“重用,随着技术的不断演化、业务的不断变化,应用的交互常常需要架设在异构系统之上,此时,代码复用将无能为力,所以软件开发方法在构件化的技术上结合互联网技术又有了新发展,其核心思想是软件并不需要囊括构件,所需要的仅仅是构件运行的结果。也就是面向服务(SOA)的思想,但SOA并不是一个产品,而是一种思想方法,实现这种方法的基础唯有中间件。例如我们可以在Apache的web
server的基础上,加上一组能够处理SOAP请求并返回SOAP结果的解析器,那么此处的Web server和WS 构件就是我们提供SOA服务的中间件。
中间件分类:
远程过程调用(RPC)中间件
远程过程调用是一种广泛使用的分布式应用程序处理方法,一个应用程序使用RPC来”远程“执行一个位于不同地址空间里的过程,并且从效果上看和执行本地调用相同。此类中间件需要根据相应的RPC规范,例如CORBA和Web Service,需要提供相应的服务支持,如屏蔽底层通信的细节,以及数据在异构系统之间的流转,服务在服务器端的注册、发现和使用等
面向消息的中间件
RPC的调用时同步调用,客户端和服务器直接连接,没有中间机构来处理请求,通信过程中,服务器要保持在线状态。MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成,其特点是:
1,通讯程序可在不同的时间运行。
2,减少系统延迟,对应用程序的结构没有约束,可以是一对一的联系,也可以是一对多的联系。
3,解耦调用者和被调用者,使程序与网络复杂性相隔离。
数据访问中间件
对数据库访问的各种driver,或者能够提供分布式数据库访问的数据访问层
事务处理监控
通过对事务的监控,进行事务管理和协调、负载均衡、失败恢复等
事务管理,即保证在其监控下的事务处理的原子性、一致性、独立性和持久性。
企业服务总线(ESB:Enterprise Service Bus):
ESB是一种开放的、基于标准的分布式同步或异步信息传递中间件。虚拟化了服务的地理位置。
ESB类似于硬件系统里总线的概念,所有服务之间的调用统一通过ESB,ESB负责传递相应的的请求到相应的服务,从而使得各个应用只需要和ESB进行通信,就能满足各种服务要求,省去了各服务器向外暴露自己端点(Endpoint)的麻烦,同时也降低了服务请求者和服务提供者之间的耦合,因为假如某个服务需要更改自己的endpoint,只需要在ESB的注册服务上修改相应的配置信息即可,而对于客户端是完全透明的。
基于XML的中间件(XML-Based Middleware):
XML允许开发人员为实现在internet中交换结构化信息而创建文档。
中间件的发展趋势
1,规范化
在中间件的发展过程中,做的最好的一件事情就是规范的制定。对于不同类型的中间件,目前都有一些规范可以遵循,如消息类的JMS,对象类的CORBA、COM,交易类的XA,JTA,应用服务器类的J2EE,.NET,数据访问类的ODBC和JDBC,JTA,Web服务有WSDL,UDDI,SOAP以及JAX-RS(JSR 311)等。这些规范极大的促进了中间件技术的发展,同时保证了系统的扩展性、开放性和互操作性。
2,构件化和松耦合
除了过时的CORBA和DCOM的基于对象的RPC构件技术外,随着企业业务流程整合和电子商务应用的发展,中间件技术朝着面向Web、松耦合的方式发展。基于XML和Web服务的中间件技术,使得不同系统之间、不同应用之间的交互建立在非常灵活的基础上。XML是一种可扩展的标识语言,是一种中立于开发语言的结构化文档表现方式,非常适合于异构系统间的数据交换,因此在国际上已经被普遍采纳为电子商务的数据标准。而Web服务作为基于Web技术的构件,在流程中间件和集成下可以灵活、动态地被组织成跨企业的商务应用。
3,平台化