中间件
中间件是一个独立的系统软件或服务程序。使用这种软件,分布式应用软件可以在不同技术之间共享资源。中间件位于客户机服务器的操作系统上,管理计算资源和网络通信。本质上,中间件是一个分布式软件层或平台。典型的中间件包括事务中间件、过程中间件、消息中间件、对象中间件、Web应用服务器和Web服务中间件。美国电报公司·贝尔实验室于1984年开发的Tuxedo被认为是严格意义上的第一个中间件产品。东方通科技于1992年开始中间件的研发,并于1993年推出首款产品TON-LINK/Q。BEA成立于1995年,在收购Tuxedo后成为第一家中间件制造商。2001年,微软发布了。NET和中间件发展成两个技术阵营:。NET和Java。2010年,全球中间件市场总额为176亿美元,2015年市场空间达到250亿美元,到2023年,全球中间件市场空间达到434亿美元。
中间件的特点是易于集成、高可靠性、易用性和高透明性。未来的发展方向是着眼于消除信息孤岛,促进无边界信息流以支持开放、动态、多变的互联网环境中的复杂应用系统,从而实现互联网上计算资源、数据资源、服务资源和软件资源等信息资源的综合利用。
概念定义 编辑本段
中间件有两层含义。从狭义上讲,中间件是一种在网络环境下连接操作系统软件和应用软件的分布式软件。从广义上讲,中间件可以被视为中间层软件,它主要是指介于系统软件和应用软件之间的中间层次的软件,目的是为应用软件的开发提供更直接有效的支持。相对广泛接受的定义来自IDC(Intennet data Center):中间件是一个独立的系统软件或服务程序,分布式应用软件通过它在不同技术之间共享资源。中间件位于客户机服务器的操作系统上,管理计算资源和网络通信。
发展历史 编辑本段
出生背景
20世纪80年代,高速网络的出现和微型计算机工作站的普及使网络分布式计算成为新一代计算和应用的主流。网络分布式计算需要利用Internet/Inteanet上的各种资源协同完成计算任务,因此出现了客户机/服务器的计算服务模式,它使多个客户机能够共享数据设备。20世纪90年代初,将数据存储在数据服务器中并在客户端实现其相关业务逻辑的“胖”客户机/服务器计算模式成为主流模式。然而,两层结构模式制约了系统的发展。随着用户业务需求的增长和互联网的普及,出现了三层客户机/服务器和浏览器/服务器结构,并在客户界面和数据库之间增加了一个独立的中间层。
相关发展
IBM的CICS(注册内部控制专家)是最早具有中间件技术思想和功能的软件。但是,由于中间件需要在分布式环境中屏蔽异构OS和网络协议,因此中间件必须能够在分布式环境中提供通信服务,而CICS不是分布式环境的产物。因此,1984年(有争议的是,1990年在美国电话电报公司贝尔实验室诞生的Tuxedo(现为Oracle所有)被视为严格意义上的第一个中间件产品。Tuxedo解决了分布式事务控制的问题,中间件开始成为网络应用的基础设施,中间件正式形成。后来被Novell收购。
东方通科技于1992年开始中间件的研发,并于1993年推出首款产品TON-LINK/Q。
1994年,IBM发布了消息队列服务的MQ系列产品,以解决分布式系统的异步、可靠和传输通信服务问题,消息中间件由此诞生。BEA成立于1995年,从Novell公司购买了Tuxedo,并开始利用其资本和技术优势在全球市场推广中间件产品。同年,Java之父詹姆斯·高斯林发明了Java语言,提供跨平台的通用网络应用服务,成为中间件的核心技术。
2001年,微软发布了。NET和中间件发展成两个技术阵营:。NET和Java。
2010年全球中间件市场总额为176亿美元,其中AS(18.4%)、ESB(12.3%)和BPMS(12.3%)的需求最大。
2015年市场空间达到250亿美元,其中前五名为IBM、Oracle、微软、SoftwareAG、Tibeo等。其市场主要分布在北美、西欧、日本和亚太地区。
到2023年,全球中间件市场空间为434亿美元,五年复合增长率为10.3%;中国中间件市场空间为13.6亿美元,五年复合增长率为15.7%。
基本特征 编辑本段
平台化:中间件是一个平台,所以它必须独立存在。同时,中间件作为运行时的系统软件,为上层网络应用系统提供运行环境,并通过标准接口隔离其支撑系统,实现其独立性,即平台性。
易于集成:中间件易于集成,并且可以无缝连接到应用程序开发环境。应用程序可以定位和共享中间件提供的各种应用服务,这将用户从复杂的平台、网络和数据库选择中解放出来。
高可靠性和易用性:中间件具有高可靠性和易用性,可以在同构或异构环境中与各种数据源进行通信。同时,它可以管理数据之间的公共逻辑约束。中间件在实现对象的跨平台应用时,对外提供了统一的方法调用接口,降低了应用系统的复杂度。跨平台统一接口的调用使应用程序开发具有标准化和高度可移植性。由于中间件的语言独立性,开发人员可以利用彼此的编程技能和成果。
透明性:中间件可以满足大量应用程序的需求,运行在多种硬件和操作系统平台上,支持分布式计算,并提供跨网络、硬件和操作系统平台的应用程序或服务的透明交互功能。由于中间件实现的功能对应用程序是透明的,因此可以在不影响系统其他部分的情况下在本地进行改进。
主要分类 编辑本段
中间件主要封装底层系统的能力,使应用层能够通过系统中间件与系统通信,提供能力访问、能力暴露和安全控制功能,避免应用组件与OS(操作系统)层的直接交互,并将复杂的协议处理、网络故障、并行操作等问题与应用程序隔离开来,从而为上层应用软件提供运行和开发环境。基于不同的目的和实现机制,中间件可以分为:事务中间件、过程中间件、消息中间件、对象中间件、Web应用服务器、Web服务中间件等。,以及数据访问中间件。
过程中间件:过程中间件,也称为远程过程调用(RPC)中间件,通常在逻辑上分为两部分:客户端和服务器。客户端和服务器之间的通信可以使用同步通信或异步调用线路程序。过程中间件具有良好的异构支持能力。通过采用C/S体系结构,分布式系统中的自治行为实体被分为两个角色:客户端和服务器端。客户端是服务请求者,服务器是服务接收者,提供一个或多个远程流程,这是一种基于流程的服务访问。在RPC模型中,如果客户端和服务器有相应的RPC接口并有RPC运行支持,则可以完成相应的互操作性,而不必局限于特定的服务器。简单易用,但由于客户端和服务器之间的访问连接,它在易于裁剪和容错方面存在一些限制。典型成果包括以OSF DCE(分布式计算环境)和开放软件基金会(开放软件基金会)为代表的通用产品。
面向消息的中间件:消息中间件(Message Oriented Middleware,MOM)简称消息中间件,是一种以消息为载体进行通信的中间件。它使用高效可靠的消息机制来实现不同应用程序之间的大量数据交换。根据不同的通信模型,可分为消息队列和消息传递,可在复杂的网络环境中实现安全的异步通信,具有高可靠性和高效率。它可以扩展分布式环境中进程之间的通信,并支持多种通信协议、语言、应用程序、硬件和软件平台。它的主要特点是通信程序可以在不同的时间运行,对应用程序的结构没有约束,并且程序与网络的复杂性隔离。流行的MOM中间件产品包括IIBM的MQSeries和BEA的MessageQ。
面向对象的中间件:面向对象中间件也称为分布式对象中间件,支持分布式对象模型,使软件开发人员能够在分布式异构环境中使用面向对象的方法和技术开发应用程序。它是一个标准化的中间件,具有强大的功能、良好的异构支持和广泛的适用性。它为分布式计算环境中透明地传输对象请求提供了一个通信框架,是当今软件技术的主流方向。CORBA和DCOM是两个最强大的标准。OMG(Object Management Group)是分布式对象技术标准化的国际组织,它制定了CORBA等标准。
数据访问中间件:数据库访问中间件是在系统中建立数据资源互操作性的模型,为网络中的虚拟缓存和格式转换提供了方便。它是一种应用广泛且成熟的中间件,其典型代表是ODBC。ODBC是一种基于数据库的中间件标准,它允许应用程序与本地或远程数据库进行通信,并提供了一系列API。在大多数情况下,这些API隐藏在开发工具中,程序员不会直接使用它们。但在数据访问中间件处理模型中,数据库是信息存储的核心单元,中间件以灵活的方式完成通信功能,但不适用于一些需要高性能处理的场合。
交易中间件:事务中间件,也称为事务管理程序,是应用最广泛的中间件之一。其主要功能是提供在线事务处理所需的通信、并发访问控制、事务控制、资源管理、安全管理、负载平衡、故障恢复等必要服务。它具有可靠性高、扩展性强的特点,主要应用于电信、金融、飞机订票系统、证券等领域。
Web应用服务器:Web应用服务器是Web服务器和应用服务器结合的产物。应用服务器中间件是软件的基础设施,它利用组件技术将应用软件集成到一定的协同工作环境中,并提供各种通信机制、事务处理能力和应用程序开发与管理功能。应用服务器是中间件市场的热点。
功能特征 编辑本段
中间件是一种独立的系统级软件,它连接操作系统层和应用层,屏蔽具体操作的细节,并为不同的操作系统提供应用程序接口标准化和协议统一。中间件的目的是简化分布式系统的构建。其基本思想是提取分布式系统构建中的通信、同步、激活、并发、可靠性、安全性、可扩展性和异构性等常见问题,封装常见问题的解决机制并提供简单统一的接口。其功能包括通信支持、并发支持和公共服务。
通信支持:中间件为其支持的应用软件提供了基于平台的运行环境,屏蔽了底层通信之间的接口差异,实现了互操作。大多数基于中间件的系统需要与其他分布式服务或系统进行交互。操作系统提供一组网络操作接口,而中间件提供通信支持以屏蔽复杂的底层接口。通信支持主要包括远程过程调用和信息。远程过程调用是运行中的客户端像本地服务一样调用远程服务器的服务,消息机制是使用高效可靠的消息传递机制进行平台间的数据交互。
应用支持:中间件的目的是为上层应用服务,提供应用层不同服务之间的互操作机制,为上层应用开发提供统一的平台和运行环境,封装不同的操作系统,为应用提供统一的标准接口,实现应用开发和运行的独立性,并为应用结构和开发方法提供强有力的支持。
并行支持:中间件为上层提供了“单线程”或“单进程”的开发模型,屏蔽了采用并发技术(多线程、多进程)带来的复杂性,简化了上层程序开发和维护的复杂性,提高了上层程序的稳定性。
公共服务:公共服务是应用程序中常见功能或约束的提取。中间件提供一个或一组公共服务,这些服务是针对某个系统或某类系统的。应用系统在实现和运行时可以直接使用公共服务。通过提供标准统一的公共服务,减少了系统开发的工作量,也有助于应用开发人员更加关注业务功能的需求、设计和实现,提高应用软件的质量。
系统结构 编辑本段
中间件是具有一系列特定属性的程序模块或服务,大致分为上层、中间层和下层三个模块。上层是应用程序接口层,中间层是事件处理层,下层是数据采集设备接口层。它通过上层和下层接口与外界交互,中间层处理数据。
应用程序接口层:应用程序接口可分为内容层、信息层和传输层,是中间件与外部应用链接的通道,主要连接应用系统程序、网络访问程序等中间件或服务系统。应用程序通常是现有企业运行的程序,如企业资源管理、供应链管理、智能交易、分析报告等。网络访问程序通过应用程序接口实现系统与远程服务或相关信息资源服务器的连接,或者为其他中间件或服务系统提供数据服务,如对象分析服务。
事件处理层:事件处理层由多个事件程序模块组成,如设备管理模块、事件管理模块、任务管理模块和实时内存事件数据库。从底层过滤、聚合、分类和分发数据。
数据采集设备的接口层:物联网的底层数据来自射频终端、传感器和条形码等不同的数据采集设备,因此中间件必须为各种形式的数据采集设备提供集成的匹配功能。数据采集设备接口层位于中间件架构的最底层,直接与数据采集器进行交互,提供RS-232、以太网、无线网络、USB等不同设备的链接方式,采用TCP/IP JEEE 802.11系列、ZigBee等多种连接通信协议,将采集到的数据生成事件并发送到事件处理层。
主要应用 编辑本段
与电子商务的集成:互联网是电子商务的基础。电子商务的发展离不开大量的信息传递。电子商务使用B/S技术处理大量数据。中间件在B/S模式中扮演功能层的角色。用户从Web界面向服务器提交数据请求,功能层负责将这些请求分类成数据,然后将数据交换应用程序发送到数据库。在数据库筛选请求后,所需的数据通过功能层传递回用户。此时,单个用户可以进行点对点通信。
自然地理应用:为了实现专用网络和位置服务平台的集成应用,可以使用中间件(位置路由工具)在不同网络之间和不同编码协议下转发位置信息。例如,HLJCORS(黑龙江省卫星定位连续运行综合服务系统)和黑龙江省位置服务平台是两个独立的平台,具有不同的功能和用途。如果两个平台集成应用,将实现更高精度的定位服务。但是两个平台有各自的网络环境,不能直接交换数据,但是可以通过中间件完成网络环境和数据格式之间的转换。位置路由工具接收到来自用户设备的数据流后,首先完成数据分析得到用户的经纬度、大地高等位置信息,然后按照用户自定义的数据格式进行编码,并将位置信息转发给位置服务平台。
与汽车工业的交集:汽车产业正在向电气化、智能化、网联化、共享化转型。智能电控、智能驾驶、智能互联和智能出行深刻影响着人们的生活方式和思维方式,面向服务的软件架构越来越受到各大汽车厂商的青睐。面向服务的中间件(如数据分发服务,DDS)可以实现低延迟、高可靠性和高实时性的数据融合服务。它可以从根本上降低软件的耦合性和复杂性,提高软件的模块化程度,与DDS集成的汽车软件可以在下一代汽车的架构中更好地运行,这也可以降低开发成本,缩短研发时间。
在电信服务系统中的应用:以Tuxedo中间件为例,其结构包括客户端逻辑层、Tuxedo中间层和数据库层。在三层结构体系中,电信查询服务系统基于C/S和B/S两种架构方案。例如,C/S架构为个人和企业提供总账查询、支付历史查询和余额查询,并通过客户端-应用服务器-数据库服务器的架构实现。B/S架构采用WEB浏览器-WEB服务器-应用服务器-数据库服务器的架构。电信查询服务系统以Tuxedo中间件为核心,集成C/S和B/S架构,实现客户端和服务器端的数据交互和同步通信。
在航空航天领域的应用:根据现代航空电子数据加载功能的需求,可以设计并实现一个介于应用软件和系统软件之间的支持重用的数据加载中间件软件。它使用系统软件提供的基本服务,如文件系统、总线或网络通信接口,来连接数据加载系统中的加载管理端和代理端,屏蔽数据加载相关操作的具体实现细节,并为数据加载应用软件提供与平台无关的统一标准接口。它可以减少加载应用软件的开发工作量,有助于提高数据加载系统的可靠性。
附件列表
词条内容仅供参考,如果您需要解决具体问题
(尤其在法律、医学等领域),建议您咨询相关领域专业人士。