`
jdlsfl
  • 浏览: 156440 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

一、为什么要中间件

计算机<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以靠近数据库,但也并非总是如此,何况其它应用功能如何分配也是不容易确定的。 

分享到:
评论

相关推荐

    中间件技术的概念与分类

    火龙果软件工程技术中心 一、为什么要中间件计算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用范围更为...

    浅析中间件技术的研究现状

    中间件是为解决分布式环境中的异构问题而提出的,它是当前软件技术发展的一个潮流,是发展最快的软件品种之一。该文阐述了中间件技术的概念、分类、优势以及作用,同时提出了目前中间件的发展趋势。

    ARM学习笔记之中间件技术探析--【千锋培训】

    文档介绍了引言,1ARM学习笔记之中间件的概念,2ARM学习笔记之中间件的分类,3 ARM学习笔记之主流中间件技术平台,4ARM学习笔记之中间件技术的发展趋势,5 小结

    电子商务物流信息系统.doc

    基于中间件的开发技术 10 3.5. 基于OLE的开发技术 11 3.6. 基于代理(Agent)的开发技术 11 3.7. 数据挖掘技术 12 3.8. 数据仓库技术 12 3.9. 安全控制技术 13 4. 物流信息系统的主要功能 14 4.1. 基本功能 15 4.2. ...

    推荐系统架构师考试全套视频教程合集.zip

    8.1 中间件技术 8.1.1 中间件的概念 8.1.2 主要的中间件 8.2 典型应用架构 8.3 企业应用集成 第九部分 应用数学 9.1 概率统计应用 9.2 图论应用 9.3 组合分析 9.4 算法的选择与应用 9.5 运筹方法 9.6 数学建模 第...

    安防天下智能网络视频监控技术详解与实践part2

    6.3.1 视频中间件技术应用 178 6.3.2 anr技术 179 6.3.3 nvr冗余技术 180 6.3.4 视频标签功能 181 6.3.5 带视频分析功能的nvr 181 6.4 nvr产品选型要点 181 6.4.1 nvr典型参数 181 6.4.2 nvr产品选型 ...

    安防天下智能网络视频监控技术详解与实践.part3

    6.3.1 视频中间件技术应用 178 6.3.2 anr技术 179 6.3.3 nvr冗余技术 180 6.3.4 视频标签功能 181 6.3.5 带视频分析功能的nvr 181 6.4 nvr产品选型要点 181 6.4.1 nvr典型参数 181 6.4.2 nvr产品选型 182 ...

    XPlus内容管理系统3.3体验版本(简体中文)

    通过全面集成各种格式的内容和数据库,结合Xplus网站内容管理系统强大的数据管理和全文检索能力,融合内容采、编、发工作流程并配以业界标准的组件和中间件技术,可为用户方便地实现简单灵活的内容分类管理、内容...

    安防天下智能网络视频监控技术详解与实践part1

    6.3.1 视频中间件技术应用 178 6.3.2 anr技术 179 6.3.3 nvr冗余技术 180 6.3.4 视频标签功能 181 6.3.5 带视频分析功能的nvr 181 6.4 nvr产品选型要点 181 6.4.1 nvr典型参数 181 6.4.2 nvr产品选型 ...

    人工智能产业分类目录.docx

    3 人工智能中间件 人工智能中间件是一种基础软件,位于AI应用与操作系统、数据库之间,主要用于解决数据传输、数据访问、应用调度、系统构建和系统集成、流程管理等问题,为系统与系统之间做连接转换。 4 函数库 支持...

    数据库系统和应用.pdf

    用户 用户 用户 … 第一章 绪论 1.1 数据库系统概述 1.1.1 四个基本概念 1.1.2 数据管理技术的产生和发展 1.1.3 数据库系统的特点 第一章 绪论 数据管理技术的产生和发展 什么是数据管理 对数据进行分类、组织、编码...

    软件工程完整ppt

     162中间件技术  1621中间件概念及特点  1622中间件的分类  163组件技术  1631组件与组件化  1632组件模型及描述语言  1633组件的检索与组装  164计算机辅助软件工程技术  1641CASE的基本概念  1642CASE...

    信息系统项目管理师辅导教程(上册)part2

    7.中间件技术 第四章 软件体系结构 1.软件体系结构概述 2.软件体系结构建模 3.典型的软件体系结构 4.特定领域软件体系结构 5.基于体系结构的软件开发模型 6.软件体系结构评估 第五章面向对象方法 1.面向对象的概念 2...

    进销存管理系统设计方案.doc

    三 层结构是伴随着中间件技术的成熟而兴起的,核心概念是利用中间件,将应用分为表 示层、业务逻辑层和数据存储层三个不同的处理层次,三个层次的划分是从逻辑上分 的,具体的物理分法可以有多种组合。中间件作为...

    空间数据库管理系统概论.docx

    空间数据引擎和对象关系空间数据库的对比 项目 空间数据引擎(寄生模式) 对象关系空间数据库(融合模式) 技术特点 中间件技术 数据库技术 代表产品 ARCSDE、SuperMap SDX+、MapGIS SDE、TerraLib(开源) Oracle ...

    软件测试工程师考试大纲及历年真题

     ·软件质量管理的目标、内容、方法和技术  5.4 软件过程管理  ·软件过程管理概念  ·软件过程改进  ·软件能力成熟度模型  5.5 软件配置管理  ·软件配置管理的意义  ·软件配置管理的过程、方法...

    Websphere MQ入门教程

    1.1.2中间件的分类 12 1.2三种通信技术的比较 13 1.3 WebSphere MQ的原理 15 1.4 WebSphere MQ的重要特点 16 1.4.1统一接口 16 1.4.2处理不依赖时间的限制 16 1.4.3给分布式处理提供的强健的中间件 16 1.5本章小节 ...

    大学计算机基础-计算机基础知识.pptx

    中间件技术 4.云计算 第七页,共81页。 大学计算机基础-计算机基础知识全文共81页,当前为第7页。 1.1.5 未来计算机的发展趋势 1.电子计算机的发展方向 从类型上看,电子计算机技术正在向巨型化、微型化、网络化和...

    Websphere MQ入门教程.doc

    1.1.2中间件的分类 12 1.2三种通信技术的比较 13 1.3 WebSphere MQ的原理 15 1.4 WebSphere MQ的重要特点 16 1.4.1统一接口 16 1.4.2处理不依赖时间的限制 16 1.4.3给分布式处理提供的强健的中间件 16 1.5本章小节 ...

Global site tag (gtag.js) - Google Analytics