中间件的概念产生以来,一直没有统一而标准的定义,一直在发展中不断地补充其内涵。由于包括的内容较多,对于不同的需求出现多种产品,使得表述起来更加复杂。
从应用和系统角度来看,中间件的作用在于屏蔽了底层操作系统的复杂性,可使软件开发人员在简单而统一的开发环境下,着力应用对象特点的开发工作上,不要重复已有可利用的内容,只要完成特殊的内容,这不仅降低大程序设计的复杂性,而且提高了工作的效率,同时减少了系统的维护、运行和管理的工作量,还减少其他相关的费用。由于中间件作为新层次的基础软件,其重要作用是将不同时期、不同操作系统上开发的应用软件集成起来,彼此整体协调工作。只能根据在系统中所起的作用和采用的技术不同来对其进行表述,通常可分为以下几类。
1.数据访问中间件
数据访问中间件,是系统中建立数据应用资源互操作的一种模式。在异构环境下的数据库连接或文件系统连接,为在网络中虚拟缓冲存取、格式转换、解压等带来方便。数据访问中间件在所有的中间件中是应用最广泛、技术最成熟的一种。这种方式虽然灵活,但是并不适合于一些要求高性能处理的场合,因为其中需要进行大量的数据通信,而且当网络发生故障时,系统将不能正常工作。
2.远程过程调用中间件
远程过程调用中间件(RPCM)是一种广泛使用的分布式应用程序处理方法,是用于执行一个位于不同地址空间里的过程。当一个应用程序A需要与远程的另一个应用程序B交换信息或要求B提供协助时,A在本地产生一个请求,通过通信链路通知B接收信息或提供相应的服务,B完成相关处理后将信息或结果返回给A。
远程调用中间件在客户端/服务器计算方面,比数据访问中间件又迈进了一步。在远程过程调用(RPC)模型中,客户端和服务器只要具备了相应的RPC接口,并且具有RPC运行支持,就可以完成相应的互操作,而不必限制于特定的服务器。RPC所提供的是基于过程的服务访问,客户端/服务器进行直接连接,没有中间机构来处理请求,因此也具有一定的局限性。比如,RPC通常需要一些网络细节,以定位服务器;在客户端发出请求的同时,要求服务器必须处于工作状态。
3.面向对象中间件
面向对象中间件(OOM)将编程模型从面向过程升级为面向对象,对象之间的方法调用通过对象请求代理(ORB)转发。ORB能够为应用提供位置透明性和平台无关性,接口定义语言(IDL)还可能提供语言无关性。该类中间件还为分布式应用环境提供多种基本服务,如名录服务、事件服务、生命周期服务、安全服务和事务服务等。这类中间件的代表有CORBA(公共对象请求代理体系结构)、DCOM(分布式组件对象模型)、JavaRMI(Java远程方法调用)。
4.基于事件的中间件
大规模分布式系统拥有数量众多的用户和连网设备,没有中心控制点,系统需对环境、信息和进程状态的变化作出响应。此时传统的一对一请求/应答模式已不再适合,而基于事件的系统以事件作为主要交互手段,允许对象之间异步、对等地交互,特别适合广域分布式系统对松散、异步交互模式的要求。基于事件的中间件(EBM)关注为建立基于事件的系统所需的服务和组件的概念、设计、实现和应用问题。它提供了面向事件的编程模型,支持异步通信机制,与面向对象的中间件相比,有更好的可扩展性。
5.面向消息的中间件
面向消息的中间件(MOM)是基于报文传递的网络通信机制的自然延伸,其工作方式类似于电子邮件:发送方只负责消息的发送,消息内容由接收方解释,并采取相应的行动;消息暂存在消息队列中,若需要,可在任何时候取出,通信双方不需要同时在线。它利用高效、可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信实现分布式系统的集成。通过提供消息传递和消息排队模型,可在分布环境下扩展进程间的通信,并支持多通信协议、语言、应用程序、硬件和软件平台。由于没有同步建立过程,也不需要对调用参数进行编/解码,所以面向消息的中间件效率较高,而且有更强的可扩展性和灵活性,更适合建立企业级或跨企业的大规模分布式系统。但面向消息的中间件的异步通信方式可能不适合有实时要求的应用。另外,从编程的角度看,其抽象级别较低,容易出错,不易调试,因此面向消息的中间件可看成实际需求和抽象等级间的一种折中。面向消息的中间件通常有消息传递/消息队列和出版/订阅两种类型。在交互模式上,前者是“推”模式,后者是“拉”模式。典型的面向消息的中间件产品有BEA公司的消息Q、微软公司的微软信息队列服务器(MSMQ)、IBM公司的MQ系列消息排队系统。消息传递和排队技术主要有以下3个特点:
1)通信程序可在不同的时间运行。程序不在网络上直接相互通话,而是间接地将消息放入消息队列中,程序间没有直接的联系,也不必同时运行。当消息放入适当的队列时,目标程序甚至根本不需要在运行之中;即使目标程序在运行,也不意味着要立即处理该消息。(www.xing528.com)
2)对应用程序的结构没有约束。在复杂的应用场合中,通信程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通信方式的构造并没有增加应用程序的复杂性。
3)程序与网络复杂性相隔离。程序将消息放入消息队列或从消息队列中取出实现相互之间的通信,与此关联的全部活动(比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等)是MOM的任务,程序不直接与其他程序通话,且不涉及网络通信的复杂性。
6.面向对象代理的中间件
随着面向对象技术与分布式计算技术的发展,两者相互结合形成了分布对象计算,并发展为当今软件技术的主流方向。1990年年底,对象管理组织(OMG)首次推出对象管理结构(OMA),对象请求代理(ORB)是其中的核心组件。它的作用在于提供一个通信框架,定义异构环境下对象透明地发送请求和接收响应的基本机制,建立对象之间的关系。
ORB使得客户端/服务器对象可以透明地向其他对象发出请求或接受其他对象的响应,这些对象可以位于本地,也可以位于远程设备。ORB拦截请求调用,并负责找到可以实现请求的对象、传送参数、调用相应的方法、返回结果等客户端对象并不知道与服务器对象通信、激活或存储、服务器对象的机制,也不必知道服务器对象位于何处、用何种语言、使用什么操作系统或其他不属于对象接口的系统成分。值得指出的是,客户端和服务器角色只是用来协调对象之间的相互作用,根据相应的场合,ORB上的对象可以是客户端,也可以是服务器,甚至两者兼而有之。当对象发出一个请求时,它是处于客户端角色;当它在接收请求时,它就处于服务器角色。另外,由于ORB负责对象请求的传送和服务器的管理,客户端和服务器之间并不直接连接,因此与RPC所支持的单纯客户端和服务器结构相比,ORB可以支持更加复杂的结构。
7.事务处理监控中间件
事务处理监控中间件(TPM)又叫做事务处理监控器,支持分布式组件的事务处理,通常有请求队列、会话事务、工作流等模式,可视为是事务处理应用程序的“操作系统”。多数事务处理监控中间件支持负载均衡和服务组件的管理,具有事务的分布式两阶段提交、安全认证和故障恢复等功能。事务处理监控中间件最早出现在大型机上,为其提供支持大规模事务处理的可靠运行环境。其一方面,通过复用和路由技术协调大量客户对服务器的访问,提高系统的可扩展性;另一方面扩展了数据库管理系统的事务处理概念,在各个子系统之间协调全局事务的处理。分布应用系统对大规模的事务处理提出了需求,比如商业活动中大量的关键事务处理。事务处理监控中间件介于客户端和服务器之间,进行事务管理与协调、负载平衡、失败恢复等,以提高系统的整体性能。事务处理监控中间件主要有进程管理、事务管理以及通信管理等功能。
1)进程管理包括启动服务器进程,为其分配任务,监控其执行,并对负载进行平衡;
2)事务管理,保证在其监控下的事务处理的原子性、一致性、独立性和持久性:
3)通信管理,为客户端和服务器之间提供了多种通信机制,包括请求响应、会话、排队、订阅发布和广播等。
事务处理监控中间件能够为大量的客户端提供服务,如飞机订票系统。如果服务器为每一个客户端都分配其所需的资源,在同一时刻并不是所有的客户端都需要请求服务,而一旦某个客户端请求了服务,它希望得到快速的响应。事务处理监控中间件在操作系统之上提供一组服务,对客户端请求进行管理,并为其分配相应的服务进程,使服务器在有限的系统资源下,能够高效地为大规模的客户群提供服务。
中间件能够屏蔽操作系统和网络协议的差异,为应用程序提供多种通信机制,并提供相应的平台以满足不同领域的需要。因此,中间件为应用程序提供了一个相对稳定的高层应用环境,中间件所应遵循的一些原则离实际还有很大距离。多数流行的中间件服务使用专有的API和专有的协议,使得应用建立于单一厂商的产品,来自不同厂商的产品很难实现互操作。有些中间件服务只提供一些平台的实现,从而限制了应用在异构系统之间的移植。应用开发者在这些中间件服务之上建立自己的应用,还要承担相当大的风险,随着技术的发展,往往还需重设他们的系统。尽管中间件服务提高了分布式计算的抽象化程度,但应用开发者还需要面临许多艰难的设计选择。例如,开发者需要决定分布式应用在客户端和服务器中的功能分配。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。