中间件

编辑
本词条由“百科小编” 建档。
中间件(Middleware)是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信,本质上来说,中间件是一个分布软件层或平台,典型的中间件有事务性中间件、过程式中间件、面向消息的中间件、面向对象的中间件、Web应用服务器、Web服务中间件等。中间件有两层含义,从狭义的角度来说,中间件是网络环境下处于操作系统...

中间件(Middleware)是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信,本质上来说,中间件是一个分布软件层或平台,典型的中间件有事务性中间件、过程式中间件、面向消息的中间件、面向对象的中间件、Web应用服务器、Web服务中间件等。

概念

编辑

中间件有两层含义,从狭义的角度来说,中间件是网络环境下处于操作系统软件和应用软件之间的一种起连接作用的分布式软件;从广义的角度来说,中间件可以被视为中间层软件,主要指处于系统软件和应用软件之间的中间层次的软件,目的是对应用软件的开发提供更直接和更有效地支撑。相对被普遍接受的定义是来自IDC(Intennet Date Center,互联网数据中心)的表述:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

发展历程

编辑

诞生背景

20世纪80年代,高速网络的出现和微机工作站的普及,使网络分布计算成为新一代计算和应用的主流。网络分布计算要求利用Internet/Inteanet上各种资源,协同完成计算任务,因而出现了Client/Server的计算服务模式,使多个客户端可以共享数据器。20世纪90年代初,“胖”Client/Server计算模式成为主流模式,将数据统一存储在数据服务器上,而在客户端实现其相关业务逻辑,但两层结构的模式制约着系统发展。随着用户业务需求的增长及Internet/Inteanet的普及,出现了三层Client/Server和Brower/Server结构,在客户界面和数据库之间加入了具有独立功能的中间层。

相关发展

IBM的CICS(Certified Internal Control Specialist)是最早具有中间件技术思想和功能的软件,但由于中间件需要屏蔽分布环境中异构的OS和网络协议,因而中间件必须能够提供分布式环境下的通信服务,而CICS不是分布式环境的产物,因而将1984年(有争议,一说为1990年)诞生于AT&T贝尔实验室开发完成的Tuxedo(现归于Oracle公司旗下)视为第一个严格意义上的中间件产品,Tuxedo解决了分布式交易事务控制问题,中间件开始成为网络应用的基础设施,中间件正式成型。后来被Novell收购。东方通科技在1992年就开始中间件的研究与开发,1993年推出第一个产品Ton-gLINK/Q。1994年,IBM发布消息队列服务MQ系列产品,解决分布式系统异步、可靠、传输的通信服务问题,消息中间件诞生。成立于1995年的BEA从Novell手里购买了Tuxedo后,BEA利用其资金、技术优势,开始在全球市场推广中间件产品,同年,Java之父James Gosling发明了Java语言,Java提供了跨平台的通用网络应用服务,成为中间件的核心技术。2001年,微软公司发布.Net,中间件演变为.Net和Java两大技术阵营。2010年,全球中间件市场总量为176亿美元,其中AS(18.4%)、ESB(12.3%)、BPMS(12.3%)等需求量最大。2015年,市场空间达250亿美元,其中排名前五的为:IBM、Oracle、Microsoft、SoftwareAG、Tibeo等,其市场主要分布在北美、西欧、日本和亚太。截至2023年,全球中间件市场空间434亿美元,5年复合增长率10.3%;中国中间件市场空间13.6亿美元,5年复合增长率15.7%。

基本特征

编辑

平台化:中间件是一个平台,因此它必须独立存在,同时,作为运行时刻的系统软件,中间件为上层的网络应用系统提供一个运行环境,并通过标准的接口来隔离其支撑的系统,实现其独立性,也就是平台性。易集成性:中间件具有易集成性,可以无缝接入应用开发环境中,应用程序可定位和共享中间件提供的各种应用服务,它将用户从复杂的平台、网络、数据库选择中解放出来。高可靠性和易使用性:中间件具有高可靠性和易使用性,能和同构或异构环境下的多种数据源通信,同时,它能管理数据间的公共逻辑约束。中间件实现对象的跨平台应用时,向外部提供统一的方法调用接口,降低了应用系统的复杂性。跨平台统一接口的调用,使应用程序开发变得标准化且具有很高的可移植性,由于中间件的语言无关性,开发人员可以利用对方的编程技能和成果。透明性:中间件可以满足大量应用的需要,运行于多种硬件和操作系统平台,支持分布计算,提供跨网络、硬件和操作系统平台的透明性的应用或服务的交互功能。由于中间件实现的功能对应用程序来说是透明的,所以可以对局部进行改进而不会影响到系统的其他部分。

分类

编辑

中间件主要完成对底层系统能力的封装,使应用层可以通过系统中间件和系统通信,提供能力接入、能力暴露、安全控制功能,避免应用组件直接和OS(操作系统)层交互,并将复杂协议处理、网络故障、并行操作等问题与应用程序隔离,为上层应用软件提供运行和开发环境。基于目的和实现机制的不同,中间件有以下分类:事务性中间件、过程式中间件、面向消息的中间件、面向对象的中间件、Web应用服务器、Web服务中间件等,还包括数据访问中间件。

过程式中间件

过程式中间件又称远程过程调用(Remote Procedure Call,RPC)中间件,一般从逻辑上分为客户和服务器两部分。客户和服务器之间的通信可以使用同步通信,也可以使用线程式异步调用,过程式中间件有较好的异构支撑能力,采取C/S体系结构,将分布式系统中的自主行为实体固定分解为Client和Server两类角色,Client是服务请求者,Server是服务受理者,提供一个或多个远程过程,是一种基于过程的服务访问,在RPC模型中,Client和Server要具备了相应的RPC接口,并且具有RPC运行支持,就可以完成相应的互操作,而不必限制于特定的Server。简单易用,但因为客户和服务器之间采用访问连接,因而在易剪裁性和容错方面有一定局限性。典型成果包括以OSF(Open Software Foundation)的DCE(Distributed Computing Environment)为代表的通用产品。

面向消息的中间件

面向消息的中间件(Message Oriented Middleware,MOM)简称消息中间件,是一类以消息为载体进行通信的中间件,利用高效可靠的消息机制来实现不同应用间大量的数据交换,依照通信模型的不同可分为消息队列和消息传递,可以在复杂的网络环境中高可靠、高效率地实现安全的异步通信。它可在分布环境下扩展进程间的通信,并支持多种通信协议、语言、应用程序、硬件和软件平台。其主要特点有通信程序可在不同的时间运行、对应用程序的结构没有约束、程序与网络的复杂性相隔离等。流行的MOM中间件产品有IIBM的MQSeries、BEA的MessageQ等。

面向对象的中间件

面向对象的中间件又称为分布对象中间件,简称对象中间件,支持分布对象模型,使软件开发者可以在分布异构环境下采用面向对象的方法和技术来开发应用,是一种标准化较好、功能较强的中间件,具有良好的异构支持能力和广泛的适用性。它提供了一种透明地在分布式计算环境中传递对象请求的通信框架,是当今软件技术的主流方向。其中功能最强大的是CORBA和DCOM这两种标准。OMG(Object Management Group,对象管理组织)是分布对象技术标准化方面的国际组织,它制定出了CORBA等标准。

数据访问中间件

数据库访问中间件是在系统中建立数据资源互操作的模式,为网络中虚拟缓存、格式转换提供便利,是应用广泛、技术成熟的一种中间件,典型代表为ODBC。ODBC是一种基于数据库的中间件标准,它允许应用程序和本地或者异地的数据库进行通信,并提供了一系列的应用程序接口API,在多数情况下这些API都是隐藏在开发工具中,不被程序员直接使用。不过在数据访问中间件处理模型中,数据库是信息存贮的核心单元,中间件完成通信的功能,方式灵活,但并不适合于一些要求高性能处理的场合。

事务性中间件

事务性中间件又称事务处理管理程序,是使用最广泛的中间件之一,主要功能是提供联机事务处理所需要的通信、并发访问控制、事务控制、资源管理、安全管理、负载平衡、故障恢复和其他必要的服务,具有可靠性高、扩展性强的特点,主要应用于电信、金融、飞机订票系统、证券等领域。

Web应用服务器

Web应用服务器是Web服务器和应用服务器相结合的产物。应用服务器中间件是软件的基础设施,利用构件化技术将应用软件整合到一个确定的协同工作环境中,并提供多种通信机制、事务处理能力以及应用的开发管理功能,应用服务器是中间件市场上竞争的热点。

功能

编辑

中间件是独立的系统级软件,连接操作系统层和应用程序层,屏蔽具体操作的细节,为不同操作系统提供应用的接口标准化、协议统一化。中间件的主旨是简化分布式系统的构造,基本思想是抽取分布式系统构造中的通信、同步、激活、并发、可靠性、安全性、伸缩性、异构性等共性问题,封装共性问题的解决机制并提供简单统一的接口,功能包括通信支持、并发支持、公共服务等。

通信支持

中间件为其所支持的应用软件提供平台化的运行环境,该环境屏蔽底层通信之间的接口差异,实现互操作。多数基于中间件的系统都需要与其他分布式服务或系统进行交互,操作系统提供一组网络操作接口,中间件则提供通信支持以屏蔽这组复杂的底层接口,通信支持主要有远程过程调用和信息两种方式。远程过程调用是运行客户端像调用本地服务一样调用远程服务器的服务,消息机制是利用高效可靠的消息传递机制进行平台之间的数据交互。

应用支持

中间件的目的是服务上层应用,提供应用层不同服务之间的互操作机制,为上层应用开发提供统一的平台和运行环境,封装不同操作系统,向应用提供统一的标准接口,实现应用开发和运行的独立性,为应用结构化和开发方法提供有力支持。

并发支持

中间件为上层提供一种“单线程”或“单进程”的开发模型,屏蔽采用并发技术(多线程、多进程)时造成的复杂性,简化上层程序开发和维护的复杂度,提高上层程序稳定性。

公共服务

公共服务是对应用中共性功能或约束的抽取,中间件提供一个或一组公共服务,这类服务针对某一种或某一类系统,应用系统在实现和运行时可以直接使用公共服务,通过提供标准、统一的公共服务,减少了系统开发的工程量,也有助于使应用开发者更关注业务功能的需求、设计和实现,有助于提高应用软件的质量。

架构

编辑

中间件是具有一系列特定属性的程序模块或者服务,大致分为上层、中间层、下层三个模块,上层为应用程序接口层,中间层为事件处理层,下层为数据采集设备接口层,通过上下层两个接口与外界交互,中间层进行数据处理。

中间件

中间件架构图

应用程序接口层

应用程序接口可分为内容层、信息层和传输层,是中间件与外部应用程序链接的通道,主要与应用系统程序、网络访问程序以及其他的中间件或服务系统进行连接,应用程序通常是企业资源管理、供应链管理、智能交易、分析报告等现有的企业运行的应用系统程序,网络访问程序通过应用程序接口实现系统与远程服务或相关信息资源服务器的连接,或为其他的中间件或服务系统提供数据服务,如对象解析服务(ONS)、信息服务(IS)等。

事件处理层

事件处理层由设备管理模块、事件管理模块、任务管理模块、实时内存事件数据库等多个事件程序模块组成。对来自底端的数据进行过滤、聚合、排序和分发等操作。

事件处理层构成

数据采集设备接口层

物联网的底层数据来自射频终端、传感器、条码等不同数据采集设备,因而中间件必须为各种形式的数据采集设备提供集成匹配功能。数据采集设备接口层就是位于中间件架构的最底层,直接与数据采集器交互,提供如RS-232、以太网、无线网络、USB等不同设备的链接方式,并采用TCP/IP JEEE 802.11系列、ZigBee等多种连接通信协议,将采集到的数据生成事件,传送给事件处理层。

设计原则

编辑

中间件被定义成了典型的上、中、下三层结构,其中包含有特定属性的程序模块或者服务。模块的设计初衷是能够支持不同群体对模块的扩展,中间件设计时要注意模块功能的通用性、兼容性和扩展性。做到连接应用和数据采集端的纽带。中间件的核心设计要点主要在于数据处理机制、模块之间的通信机制和应用程序接口设计。

中间件

中间件设计原则

数据处理机制:中间件在整个系统中扮演着数据过滤、聚合和分发等的重要角色。为了有效处理数据,中间件需设计灵活的适配器,通过定义统一的接口程序来屏蔽不同设备间的差异,确保系统间的兼容性。此外,中间件通过制定数据过滤优化规则来处理不准确、丢失或逻辑错误的数据,以及通过建立数据聚合规则来整合和统计数据,最终通过数据分发规则将数据有效传递。模块之间的通信机制:中间件数据的处理是一些步骤的集合,在采集数据时注意与适配器的通信,此外,在处理数据时要注意与事件管理模块的通信,通过与任务管理模块的通信完成外部事件与系统任务的交互,最后注意与实时内存事件数据库的通信完成事件信息的存储。应用程序接口设计:针对中间件的应用程序接口设计可以采用包含XML/SOAP等沟通方式,连接应用企业内部的数据库或与系统相关的数据库,使得外部应用系统可以通过此中间件取得需要的数据。

标准

编辑

中间件技术标准包括COM(Computer Object Model),CORBA(Common Object Request Broker Ar-chitecture),J2EE(Java 2Platform Enterprise Edition)等。

COM标准

COM标准最初作为Microsoft桌面系统的构件技术,主要为本地的OLE应用服务。随着Microsoft服务器操作系统NT和DOCK的发布,COM标准通过底层的远程支持,使得构件技术延伸到了应用领域。作为一种技术标准,COM以COM库(OLE32.dll和OLEAut.dll)的形式提供了访问COM对象核心功能的标准接口及一组API函数,这些API函数用于实现创建和管理COM对象的功能。

CORBA标准

CORBA分布计算技术是公共对象请求代理体系规范,该规范是OMG(Object Management Group)以众多开发系统平台厂商提交的分布对象互操作内容为基础构建的。CORBA标准是编写分布式对象的统一标准,有一个被称为IIOP(InternetInter-ORBProtoc01)的部分,是CORBA的标准Intemet协议,是面向对象的基于IIOP的二进制通信机制。CORBA中的IDL(Interface Definition Language)是定义客户端和它们调用对象之间的接口,作为一个与语言无关的接口,定义之后可以用任何面向对象的语言实现映射。

J2EE标准

在分布式互操作协议上,J2EE同时支持RMI(远程方法调用)和HOP(数据从一个网段传递到下一个网段),而在服务器端分布式应用的构造形式上,则包括了Java Serlet,JSP(Java Server Page),EJB等多种形式,以支持不同的业务需求,而且Java应用程序具有“Write once,run anywhere”(编写一次,在任何地方运行)的特性,使得J2EE技术在分布式计算领域得到了快速发展。

应用

编辑

与电子商务的整合

互联网是电子商务发展的基础,电子商务在发展过程中离不开大量的信息传输,电子商务则使用了B/S技术来处理大量数据,中间件在B/S模式下起到功能层的作用,用户从Web界面向服务器提交数据请求,功能层负责将这些请求分类为数据,再向数据库发出数据交换申请,数据库对请求进行筛选处理后,再将所需的数据通过功能层传递回到用户端,此时单一用户可以进行点对面的操作,无需通过其他软件进行数据转换。

在自然地理学上的应用

为实现专网和位置服务平台的集成应用,可以通过一种中间件(位置路由工具)实现不同网络间和不同编码协议下位置信息的转发。如HLJCORS(黑龙江省卫星定位连续运行综合服务系统)和黑龙江省位置服务平台是两个相互独立的、具有不同功能和用途的平台,若将两个平台集成应用,则会实现更高精度的位置服务。但两个平台具有各自的网络环境,不能直接进行数据交换,但通过中间件即可完成网络环境和数据格式的转换,位置路由工具接收到用户设备的数据流后,首先完成数据解析,获得用户的经纬度、大地高等位置信息,然后按自定义数据格式编码,将位置信息转发给位置服务平台。

与汽车工业的交集

汽车行业在向电动化、智能化、网联化、共享化转型,智能电控、智能驾驶、智能互联、智能出行深刻影响着人们的生活与思考方式,面向服务的软件架构也越来越受到各大汽车厂商的青睐。面向服务的中间件如数据分发服务(Data Distribution Service, DDS)能够实现低延时、高可靠、高实时性的 数据融合服务,能够从根本上降低软件的耦合性、复杂性,提高软件的模块化特性,融合了 DDS 的 汽车软件能够更好地运行在下一代汽车的体系架 构中,更能降低开发的成本、缩短研发时间。

在电信业务系统中的应用

以Tuxedo中间件为例,该结构包括客户机逻辑层、Tuxedo中间层、数据库层,在三层结构体系中,电信查询业务系统是基于C/S和B/S两种架构方案来实现用户信息查询,如C/S架构部分提供个人及企业的总账查询、缴费历史记录查询、余额查询等,采用客户端-应用服务器-数据库服务器的架构来实现;B/S架构采用WEB浏览器-WEB服务器-应用服务器-数据库服务器的架构,电信查询业务系统以Tuxedo中间件为核心,综合C/S和B/S两种架构实现客户端和服务器数据的交互和同步通讯。

在航天航空领域的应用

针对现代航空电子数据加载功能需求,可以设计并实现一种支持复用的数据加载中间件软件,其介于应用软件和系统软件之间,使用系统软件提供的例如文件系统、总线或网络通信接口等基础服务,连接数据加载系统中的加载管理端和代理端,屏蔽了数据加载相关操作的具体实现细节,向数据加载应用软件提供与平台无关的统一标准接口。可减少加载应用软件的开发工作量, 并有助于提高数据加载系统的可靠性。

相关产品

编辑

中间件产品

优势和局限性

编辑

优势

支持标准的协议和标准的接口:中间件支持标准的协议和标准的接口,而标准接口对于可移植性和标准协议的互操作性的重要性使中间件已成为许多标准化工作的主要部分。同时能够屏蔽操作系统和网络协议的差异,为应用程序提供多种通信机制,并提供相应的平台以满足不同领域的需要。定义了一个相对稳定的高层应用环境:中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件就几乎不需要进行任何修改,从而减少了企业在应用软件开发和维护中的巨额投资成本。缩短开发周期,减少维护费用:利用中间件有助于减轻应用软件开发者的负担,为利用现有的硬件设备、操作系统、数据库管理系统以及对象模型创建分布式应用软件提供便利。此外,缩短开发周期的同时,也减少了系统维护的费用。

局限性

应用产品单一,难以移植:多数流行的中间件服务使用专有的API和专有的协议,这使得应用建立于单一厂家的产品,不同厂家的产品间很难互相操作,同时有些中间件服务只提供某些特定平台的实现,限制了应用在异构系统之间的移植。存在安全风险:中间件层在从网络中接收信息的过程中,会接收到因某种原因造成的无效或错误指令,或是攻击者恶意传输进来的指令,有时无法甄别出真正的信息和指令。此外,攻击者可能会在中间件数据的采集、传输、分配、存储和应用等环节中躲过智能处理过程中的识别和过滤,从而达到攻击系统的目的,给系统带来风险。存在成本差异:不同类型的中间件成本不同,如消息中间件可以用于实现数据访问,但只在局域网上进行数据访问显然成本太大,或把交易中间件用在非交易类系统中传递消息也会增加成本,同时,技术培训也会带来开发成本的提高。

未来发展

编辑

中间件发展呈现出业务化、服务化、一体化、虚拟化趋势,为了推动无边界信息流,从而支撑开放、动态、多变的互联网环境中的复杂应用系统,中间件未来将聚焦于消除“信息孤岛”,集成、协同各种互联网信息资源,实现对互联网上的计算资源、数据资源、服务资源、软件资源等的综合利用,做到快速、灵活、可信,在提高效能的同时降低成本,如在提高组织IT基础设施的业务敏捷性的同时降低总体成本。

内容由百科小编提供,本内容不代表globalbaike.com立场,内容投诉举报请联系全球百科客服。如若转载,请注明出处:https://globalbaike.com/415769/

(837)
词条目录
  1. 概念
  2. 发展历程
  3. 诞生背景
  4. 相关发展
  5. 基本特征
  6. 分类
  7. 过程式中间件
  8. 面向消息的中间件
  9. 面向对象的中间件
  10. 数据访问中间件
  11. 事务性中间件
  12. Web应用服务器
  13. 功能
  14. 通信支持
  15. 应用支持
  16. 并发支持
  17. 公共服务
  18. 架构
  19. 应用程序接口层
  20. 事件处理层
  21. 数据采集设备接口层
  22. 设计原则
  23. 标准
  24. COM标准
  25. CORBA标准
  26. J2EE标准
  27. 应用
  28. 与电子商务的整合
  29. 在自然地理学上的应用
  30. 与汽车工业的交集
  31. 在电信业务系统中的应用
  32. 在航天航空领域的应用
  33. 相关产品
  34. 优势和局限性
  35. 优势
  36. 局限性
  37. 未来发展

轻触这里

关闭目录

目录