一、为什么要中间件
计算机<nobr oncontextmenu="return false;" id="key4" onmousemove="kwM(5);" onmouseover="kwE(event,5, this);" onclick="return kwC();" target="_blank" onmouseout="kwL(event, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">技术</nobr>迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用范围更为广阔,许多应用程序需在网络环境的异构平台上运行。
这一切都对新一代的<nobr oncontextmenu="return false;" id="key1" onmousemove="kwM(1);" onmouseover="kwE(event,1, this);" onclick="return kwC();" target="_blank" onmouseout="kwL(event, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">软件开发</nobr>提出了新的需求。在这种分布异构环境中,通常存在多种硬件系统平台(如PC,工作站,小型机等),在这些硬件平台上又存在各种各样的系统软件(如不同的操作系统、数据库、<nobr oncontextmenu="return false;" id="key0" onmousemove="kwM(0);" onmouseover="kwE(event,0, this);" onclick="return kwC();" target="_blank" onmouseout="kwL(event, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">语言</nobr>编译器等),以及多种风格各异的用户界面,这些硬件系统平台还可能采用不同的网络协议和网络体系结构连接。如何把这些系统集成起来并<nobr oncontextmenu="return false;" id="key2" onmousemove="kwM(2);" onmouseover="kwE(event,2, this);" onclick="return kwC();" target="_blank" onmouseout="kwL(event, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">开发</nobr>新的应用是一个非常现实而困难的问题。
二 什么是中间件 为解决分布异构问题,人们提出了中间件(middleware)的概念。中间件是位于平台(硬件和操作系统)和应用之间的通用服务,如图1所示,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。
图1 中间件
也许很难给中间件一个严格的定义,但中间件应具有如下的一些特点:
满足大量应用的需要
运行于多种硬件和OS平台
支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互
支持标准的协议
支持标准的接口
由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。
三、主要中间件的分类
中间件所包括的范围十分广泛,针对不同的应用需求涌现出多种各具特色的中间件产品。但至今中间件还没有一个比较精确的定义,因此,在不同的角度或不同的层次上,对中间件的分类也会有所不同。由于中间件需要屏蔽分布环境中异构的操作系统和网络协议,它必须能够提供分布环境下的通讯服务,我们将这种通讯服务称之为平台。基于目的和实现机制的不同,我们将平台分为以下主要几类:
远程过程调用(Remote Procedure Call)
面向消息的中间件(Message-Oriented Middleware)
对象请求代理(Object Request Brokers)
它们可向上提供不同形式的通讯服务,包括同步、排队、订阅发布、广播等等,在这些基本的通讯平台之上,可构筑各种框架,为应用程序提供不同领域内的服务,如事务处理监控器、分布数据访问、对象事务管理器OTM等。平台为上层应用屏蔽了异构平台的差异,而其上的框架又定义了相应领域内的应用的系统结构、标准的服务组件等,用户只需告诉框架所关心的事件,然后提供处理这些事件的代码。当事件发生时,框架则会调用用户的代码。用户代码不用调用框架,用户程序也不必关心框架结构、执行流程、对系统级API的调用等,所有这些由框架负责完成。因此,基于中间件开发的应用具有良好的可扩充性、易管理性、高可用性和可移植性。
下面,针对几类主要的中间件分别加以简要的介绍。
<ccid_nobr></ccid_nobr>1、远程过程调用
远程过程调用是一种广泛使用的分布式应用程序处理方法。一个应用程序使用RPC来“远程”执行一个位于不同地址空间里的过程,并且从效果上看和执行本地调用相同。事实上,一个RPC应用分为两个部分:server和client。server提供一个或多个远程过程;client向server发出远程调用。server和client可以位于同一台计算机,也可以位于不同的计算机,甚至运行在不同的操作系统之上。它们通过网络进行通讯。相应的stub和运行支持提供数据转换和通讯服务,从而屏蔽不同的操作系统和网络协议。在这里RPC通讯是同步的。采用线程可以进行异步调用。
在RPC模型中,client和server只要具备了相应的RPC接口,并且具有RPC运行支持,就可以完成相应的互操作,而不必限制于特定的server。因此,RPC为client/server分布式计算提供了有力的支持。同时,远程过程调用RPC所提供的是基于过程的服务访问,client与server进行直接连接,没有中间机构来处理请求,因此也具有一定的局限性。比如,RPC通常需要一些网络细节以定位server;在client发出请求的同时,要求server必须是活动的等等。
2、面向消息的中间件
MOM指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可在分布环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬件和软件平台。目前<nobr oncontextmenu="return false;" id="key3" onmousemove="kwM(3);" onmouseover="kwE(event,3, this);" onclick="return kwC();" target="_blank" onmouseout="kwL(event, this);" style="COLOR: #6600ff; BORDER-BOTTOM: #6600ff 1px dotted; BACKGROUND-COLOR: transparent; TEXT-DECORATION: underline">流行</nobr>的MOM中间件产品有IBM的MQSeries、 BEA的MessageQ等。消息传递和排队技术有以下三个主要特点:
通讯程序可在不同的时间运行:程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。
对应用程序的结构没有约束:在复杂的应用场合中,通讯程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通讯方式的构造并没有增加应用程序的复杂性。
程序与网络复杂性相隔离: 程序将消息放入消息队列或从消息队列中取出消息来进行通讯,与此关联的全部活动,比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是MOM的任务,程序不直接与其它程序通话,并且它们不涉及网络通讯的复杂性。
3、对象请求代理
随着对象技术与分布式计算技术的发展,两者相互结合形成了分布对象计算,并发展为当今软件技术的主流方向。1990年底,对象管理集团OMG首次推出对象管理结构OMA(Object Management Architecture),对象请求代理(Object Request Broker)是这个模型的核心组件。它的作用在于提供一个通信框架,透明地在异构的分布计算环境中传递对象请求。CORBA规范包括了ORB的所有标准接口。1991年推出的CORBA 1.1 定义了接口描述语言OMG IDL和支持Client/Server对象在具体的ORB上进行互操作的API。CORBA 2.0 规范描述的是不同厂商提供的ORB之间的互操作。
对象请求代理(ORB)是对象总线,它在CORBA规范中处于核心地位,定义异构环境下对象透明地发送请求和接收响应的基本机制,是建立对象之间client/server关系的中间件。ORB使得对象可以透明地向其他对象发出请求或接受其他对象的响应,这些对象可以位于本地也可以位于远程机器。ORB拦截请求调用,并负责找到可以实现请求的对象、传送参数、调用相应的方法、返回结果等。client对象并不知道同server对象通讯、激活或存储server对象的机制,也不必知道server对象位于何处、它是用何种语言实现的、使用什么操作系统或其他不属于对象接口的系统成分。
值得指出的是client和server角色只是用来协调对象之间的相互作用,根据相应的场合,ORB上的对象可以是client,也可以是 server,甚至兼有两者。当对象发出一个请求时,它是处于client角色;当它在接收请求时,它就处于server角色。大部分的对象都是既扮演 client角色又扮演server角色。另外由于ORB负责对象请求的传送和server的管理,client和server之间并不直接连接,因此,与RPC所支持的单纯的Client/Server结构相比,ORB可以支持更加复杂的结构。
4、事务处理监控
事务处理监控(Transaction processing monitors)最早出现在大型机上,为其提供支持大规模事务处理的可靠运行环境。随着分布计算技术的发展,分布应用系统对大规模的事务处理提出了需求,比如商业活动中大量的关键事务处理。事务处理监控界于client和server之间,进行事务管理与协调、负载平衡、失败恢复等,以提高系统的整体性能。它可以被看作是事务处理应用程序的“操作系统”。总体上来说,事务处理监控有以下功能:
进程管理,包括启动server进程、为其分配任务、监控其执行并对负载进行平衡。
事务管理,即保证在其监控下的事务处理的原子性、一致性、独立性和持久性。
通讯管理,为client和server之间提供了多种通讯机制,包括请求响应、会话、排队、订阅发布和广播等。
事务处理监控能够为大量的client提供服务,比如飞机定票系统。如果server为每一个client都分配其所需要的资源的话,那 server将不堪重负(如图2所示)。但实际上,在同一时刻并不是所有的client都需要请求服务,而一旦某个client请求了服务,它希望得到快速的响应。事务处理监控在操作系统之上提供一组服务,对client请求进行管理并为其分配相应的服务进程,使server在有限的系统资源下能够高效地为大规模的客户提供服务。
图2 事务处理监控
四、面临的一些问题
中间件能够屏蔽操作系统和网络协议的差异,为应用程序提供多种通讯机制;并提供相应的平台以满足不同领域的需要。因此,中间件为应用程序了一个相对稳定的高层应用环境。然而,中间件服务也并非“万能药”。中间件所应遵循的一些原则离实际还有很大距离。多数流行的中间件服务使用专有的API和专有的协议,使得应用建立于单一厂家的产品,来自不同厂家的实现很难互操作。有些中间件服务只提供一些平台的实现,从而限制了应用在异构系统之间的移植。应用开发者在这些中间件服务之上建立自己的应用还要承担相当大的风险,随着技术的发展他们往往还需重写他们的系统。尽管中间件服务提高了分布计算的抽象化程度,但应用开发者还需面临许多艰难的设计选择,例如,开发者还需决定分布应用在client方和server方的功能分配。通常将表示服务放在client以方便使用显示设备,将数据服务放在server以靠近数据库,但也并非总是如此,何况其它应用功能如何分配也是不容易确定的。
分享到:
相关推荐
本文将深入探讨中间件的概念、分类、优势及其作用,并分析当前中间件技术的发展趋势。 #### 二、中间件的概念与作用 中间件,按照国际数据集团(IDC)的定义,是一种独立的系统软件或服务程序,它位于客户机/...
6. **云中间件**:介绍云计算环境下的中间件技术,如OpenStack、Docker和Kubernetes,它们如何提供资源管理、容器化和微服务架构的支持。 7. **性能与安全**:分析中间件如何优化系统性能,如缓存策略、负载均衡...
为了构建更高效、稳定的企业级应用程序和服务,中间件技术应运而生。本文将详细介绍中间件的概念、重要性以及Oracle WebLogic作为中间件领域的佼佼者的具体应用。 #### 二、中间件概述 **1. 中间件定义** 中间件是...
中间件技术原理与应用 中间件,作为计算机系统中的一个...理解和掌握中间件技术,对于构建高效、可靠和可扩展的分布式系统至关重要。通过学习和实践,我们可以更好地利用中间件来解决实际问题,推动信息技术的发展。
"物联网中间件基本概念" 物联网中间件是指在物联网系统中,连接两个独立应用程序或独立系统的软件,使相连接的系统即使具有不同的接口,利用中间件仍然能相互交换信息。中间件的定义是一个独立的系统软件或服务程序...
胡晓军教授的“中间件技术j2ee ppt”课程主要涵盖了中间件技术的基本概念、J2EE架构及其在企业级应用中的重要性。中间件技术是连接操作系统、网络协议与分布式应用的关键,它屏蔽了底层系统的复杂性,使得不同系统...
《软件构件与中间件技术》电子教案中应该涵盖了中间件的分类、工作原理、常用中间件产品(如IBM WebSphere、Oracle Tuxedo等)以及如何选择和应用中间件等内容。 "武汉理工中间件复习题"可能包含了对这些理论知识的...
学习中间件技术,首先要理解它的基本概念和分类,然后深入研究各种中间件的工作原理。例如,消息队列中间件是如何保证消息的可靠传递和顺序性的,交易处理中间件如何实现ACID(原子性、一致性、隔离性、持久性)特性...
软件构件与中间件技术是现代软件开发中的关键组成部分,它们为构建复杂、可扩展和可靠的分布式应用程序提供了基础架构。在本文中,我们将深入探讨这两个概念,以及它们如何协同工作以推动IT行业的进步。 首先,我们...
中间件技术是现代计算机系统中不可或缺的一部分,它作为连接不同应用程序和系统的桥梁,极大地促进了分布式计算和企业级应用的融合。中间件的概念由来已久,它的核心在于提供一种方式,让不同技术背景的系统和应用...
鉴于中间件的定义和分类标准,笔者将对中间件的概念、分类、标准和发展现状进行阐述。 一、什么是中间件? 中间件是一种独立的系统软件或服务程序,位于操作系统和应用软件之间,负责实现不同系统之间的互操作和...
火龙果软件工程技术中心 一、为什么要中间件计算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用范围更为...
随着计算机软件技术的发展,中间件技术已日益成熟,并形成了多个不同层次和类型的中间件产品。根据IDC的分类标准,中间件可以分为以下六类: 1. **终端仿真与屏幕转换中间件(TSCTM)** - 这类中间件主要用于实现...
本文将深入探讨中间件的基本概念、类型、优势以及EJB在中间件技术中的地位。 1.1 中间件概述 中间件作为一种独立的系统软件,旨在为上层应用提供运行和开发环境,促进不同技术间的资源共享和通信。IDC定义中间件为...
中间件技术是计算机科学中的一种关键软件技术,它在嵌入式系统和分布式应用开发中扮演着至关重要的角色。尤其在ARM架构的设备开发中,中间件能够有效地解决跨平台兼容性和通信效率问题。 首先,中间件的概念可以...
在“中间件课件 ppt”中,可能包含了上述知识点的详细讲解,通过PPT形式进行直观的展示和教学,帮助学习者更深入地理解和掌握中间件技术。课件中可能涵盖了理论知识、实践示例、案例分析等内容,有助于提升读者在IT...
综上所述,"中间件论文"集合为深入理解中间件技术提供了丰富的资料,不仅能够帮助读者掌握中间件的基本概念和技术,还能洞悉该领域的发展动态和未来趋势。通过深入阅读和研究这些论文,无论是学生还是从业者,都能...
总的来说,中间件技术是构建大型分布式系统的关键,它降低了开发复杂性,提高了系统的可移植性和可扩展性,使得企业能够构建适应不断变化的技术环境和业务需求的软件系统。随着云计算、微服务和物联网的兴起,中间件...
中间件技术是软件开发中的重要组成部分,它起源于开发者对高效、标准化开发环境的需求,以解决操作系统多样性、网络复杂性和数据一致性等问题。中间件作为操作系统和应用程序间的桥梁,提供了一个抽象层,使得分布式...