中间件 订阅
中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。目前,它并没有很严格的定义,但是普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。 [1] 展开全文
中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。目前,它并没有很严格的定义,但是普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。 [1]
信息
性    质
计算机用语
外文名
middleware
相关概念
企业服务总线
中文名
中间件
实    质
独立的系统软件或服务程序
中间件简介
中间件是一类连接软件组件和应用的计算机软件,它包括一组服务。以便于运行在一台或多台机器上的多个软件通过网络进行交互。该技术所提供的互操作性,推动了一致分布式体系架构的演进,该架构通常用于支持并简化那些复杂的分布式应用程序,它包括web服务器、事务监控器和消息队列软件。 [2]  中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。 [2]  中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。 [2]  近年来,人类生活中越来越多的领域已经变得离不开计算机、网络技术以及通信技术。并且随着计算机技术的快速发展,更多的应用软件被要求在许多不同的网络协议、不同的硬件生产厂商以及不一样的网络平台和环境上运营。这导致了软件开发者需要面临数据离散、操作困难、系统匹配程度低,以及需要开发多种应用程序来达到运营的目的。所以,中间件技术的产生,在极大程度上减轻了开发者的负担,使得网络的运行更有效率。 [2] 
收起全文
精华内容
参与话题
问答
  • 中间件

    千次阅读 2007-09-15 11:59:00
    中间件(middleware)是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。中间件(middleware)是基础软件的一...
        中间件middleware)是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。中间件(middleware)是基础软件的一大,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
    

          在中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发,这些都是计算机最底层的东西,越底层越复杂,开发者不得不面临许多很棘手的问题,如操作系统的多样性,繁杂的网络程序设计、 管理,复杂多变的网络环境,数据分散处理带来的不一致性问题、性能和效率、安全,等等。这些与用户的业务没有直接关系,但又必须解决,耗费了大量有限的时 间和精力。于是,有人提出能不能将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形成一个可复用的部分,供成千上万的应用软件重复使用。这 一技术思想最终构成了中间件这类的软件。

          为解决分布异构问题,人们提出了中间件(middleware)的概念。中间件是位于平台(硬件和操作系统)和应用之间的通用服务,如图1所示,这些服务具有标准的程序接口和协议。针对不同的操作系统和硬件平台,它们可以有符合接口和协议规范的多种实现。 


     
                                                                 图1 中间件


        也许很难给中间件一个严格的定义,但中间件应具有如下的一些特点:

        满足大量应用的需要
        运行于多种硬件和OS平台
        支持分布计算,提供跨网络、硬件和OS平台的透明性的应用或服务的交互
        支持标准的协议
        支持标准的接口

        由于标准接口对于可移植性和标准协议对于互操作性的重要性,中间件已成为许多标准化工作的主要部分。对于应用软件开发,中间件远比操作系统和网络服务更为重要,中间件提供的程序接口定义了一个相对稳定的高层应用环境,不管底层的计算机硬件和系统软件怎样更新换代,只要将中间件升级更新,并保持中间件对外的接口定义不变,应用软件几乎不需任何修改,从而保护了企业在应用软件开发和维护中的重大投资。

    一、中间件的历史

    最早具有中间件技术思想及功能的软件是IBM的CICS, 但由于CICS不是分布式环境的产物,因此人们一般把Tuxedo作为第一个严格意义上的中间件产品。Tuxedo是1984年在当时属于AT& AMp;&T的贝尔实验室开发完成的,但由于分布式处理当时并没有在商业应用上获得像今天一样的成功,Tuxedo在很长一段时期里只是实验室产 品,后来被Novell收购,在经过Novell并不成功的商业推广之后,1995年被现在的BEA公司收购。尽管中间件的概念很早就已经产生,但中间件 技术的广泛运用却是在最近10年之中。BEA公司1995年成立后收购Tuxedo才成为一个真正的中间件厂商,IBM的中间件MQSeriES也是90 年代的产品,其它许多中间件产品也都是最近几年才成熟起来。

    二、为什么要中间件

        计算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出 现,使计算机的应用范围更为广阔,许多应用程序需在网络环境的异构平台上运行。这一切都对新一代的软件开发提出了新的需求。在这种分布异构环境中,通常存在多种硬件系统平台(如PC,工作站,小型机等),在这些硬件平台上又存在各种各样的系统软件(如不同的操作系统、数据库、语言编译器等),以及多种风格各异的用户界面,这些硬件系统平台还可能采用不同的网络协议和网络体系结构连接。如何把这些系统集成起来并开发新的应用是一个非常现实而困难的问题。
     
    三、主要中间件的分类

         中间件分类(IDC的分类):大致可分为六类:终端仿真/屏幕转换中间件、数据访问中间件、远程过程调用中间件、消息中间件、交易中间件、对象中间件。

          中间件所包括的范围十分广泛,针对不同的应用需求涌现出多种各具特色的中间件产品。但至今中间件还没有一个比较精确的定义,因此,在不同的角度或不同的层 次上,对中间件的分类也会有所不同。由于中间件需要屏蔽分布环境中异构的操作系统和网络协议,它必须能够提供分布环境下的通讯服务,我们将这种通讯服务称 之为平台。基于目的和实现机制的不同,我们将平台分为以下主要几类:

        远程过程调用中间件(Remote Procedure Call)
        面向消息的中间件(MesSAge-Oriented Middleware)
        对象请求代理中间件(object RequeST Brokers)

        它们可向上提供不同形式的通讯服务,包括同步、排队、订阅发布、广播等等,在这些基本的通讯平台之上,可构筑各种框架,为应用程序提供不同领域内的服务,如事务处理监控器、分布数据访问、对象事务管理器OTM等。平台为上层应用屏蔽了异构平台的差异,而其上的框架又定义了相应领域内的应用的系统结构、标准的服务组件等,用户只需告诉框架所关心的事件,然后提供处理这些事件的代码。当事件发生时,框架则会调用用户的代码。用户代码不用调用框架,用户程序也不必关心框架结构、执行流程、对系统级API的调用等,所有这些由框架负责完成。因此,基于中间件开发的应用具有良好的可扩充性、易管理性、高可用性和可移植性。

        下面,针对几类主要的中间件分别加以简要的介绍。

    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指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可在分布环 境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬件和软件平台。目前流行的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以靠近数据库,但也并非总是如此,何况其它应用功能如何分配也是不容易确定的。

    五、中间件的现状与发展趋势

          伴随着互联网技术的发展和全球经济一体化时代的来临,企业应用开始从局部自治的单业务种类、部门级应用向企业级应用转变,并促进了企业应用集成、企业间动态电子商务等网络信息系统技 术的发展。网络信息系统的目标就是把分布在各处的多个局部自治的异构信息系统通过网络集成在一起,以实现信息资源的广泛共享、集约化管理和协调工作,其中 需要解决的一个关键问题就是如何将各局部自治的系统联合成为能够发挥综合效能并能够不断成长的大系统,为此,出现了对构建网络信息系统基础支撑平台的强烈 需求。中间件的概念在这样的背景下形成和发展。

          为了直观地把握中间件(middleware)的基本概念,可以将网络和系统软件之上、应用系统之下的广袤疆域都视做中间件的领地,中间件被概括地理解为起承上启下作用的应用支撑平台。应用的“多态性”、系统软件的复杂性,都需要依赖各种类型的中间件在其中运筹、调和。中间件的核心作用是通过管理计算资源和网络通信,为各类分布式应用软件共享资源提供支撑。广义地看,中间件的总体作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。

        本文从技术、产品和市场等角度对2004年我国中间件发展现状进行了回顾和分析,通过总结目前网络应用中出现的一些新趋势,提出了中间件技术下一步发展的一些挑战性问题,并总结了中间件产品和市场的一些新特点。

        1. 发展现状

        1.1. 技术现状
        中间件技术是在克服复杂网络应用的共性问题中不断发展和壮大起来的,这些问题可以归纳为四个方面:

        1、从计算环境来看:中间件面对的是一个复杂、不断变化的计算环境,要求中间件技术具有足够的灵活性和可成长性;

        2、从资源管理的角度来看:操作系统和数据库管理系统管理的是有限资源,资源种类有限,资源量也有限,而中间件需要管理的资源类型(数据、服务、应用)更丰富,且资源扩展的边界是发散的;

        3、从应用支撑角度来看:中间件需要提供分布应用开发、集成、部署和运行管理的整个生命周期的总体运行模型;

        4、从应用的角度来看:利用中间件完成的往往是复杂、大范围的企业级应用,其关系错综复杂,流程交织。例如客户关系管理系统需要集成多个企业内部应用,而供应链管理则涉及企业之间的应用集成。

        因此,由于网络应用的复杂性,特别是分布、异构和自治等特点,决定了中间件技术和产品的形态多样性。目前的中间件技术已经形成一个丰富的谱系(图1),并 正在向上(应用框架和普适服务)和向下(融合操作系统、数据库管理系统的功能)两个方向不断延伸,并在向更宽广的应用领域拓展。

        图 1 中间件技术谱系

        在国内,国防科技大学、北京大学、北航、中科院软件所、东南大学等大学和院所很早就投入到中间件技术的研究中,并形成了一系列的成果。在国家发改委、信息 产业部电子发展基金和国家科技部863计划和政府其他基金资助下,通过各项目研究单位和国内骨干软件企业多年的不懈努力,国内在基础中间件领域已经形成丰 富的技术积累,并在CORBA技术(国防科技大学与中创软件)、消息中间件技术(中科院软件所)、J2EE应用服务器(北京大学)、Web Service(北航)等方面在技术上基本与国外保持同步发展的水平。

        以CORBA技术为例,国防科技大学与中创软件以对象管理组织发布的CORBA及MDA标准体系为依据,并结合J2EEXML、Web Service等标准,对ORB、CORBA 构件模 型及其运行支撑技术、企业协同框架(CCA)、EAI Profile等进行了深入的研究,近3年在国内一级刊物和国际会议上发表50多篇文章,向对象管理组织(OMG)提交9项标准提案,已经从标准跟从阶段 进入参与阶段,研究论文和成果在国际上得到广泛引用,国防科技大学CORBA研究成果StarBus并获得国家科技进步二等奖。

        1.2. 产品与市场现状
        中间件作为基础软件的重要组成,业已与操作系统、数据库齐头并进,在世界范围内呈现出迅猛发展的势头,已经形成一个巨大的产业。目前,中间件在国内整个软 件行业中应该是发展速度最快的市场之一。中国软件产业经过20年的发展,很多部门的信息化建设都走过了关键业务应用和部门级应用的阶段,现在开始向企业级 应用转变。所谓企业级应用,最为人们所重视的就是各类信息资源之间如何关联、整合、协同、互动和按需服务,这些都是中间件能够发挥巨大作用的空间所在。当 然,中国软件产业整体上还比较弱,整个社会信息化的程度无论在广度、深度方面都还不够,这些自然也限制了国内软件产业及中间件的市场规模。随着国家信息化 建设的不断深入,社会对应用软件,特别是对网络应用起支撑作用的中间件产品的巨大需求是不争的事实,国内中间件的市场才刚刚开始启动,存在巨大的发展机会 和空间。

        目前,网络应用中间件逐渐在基础中间件、应用中间件、应用框架等三个层面形成激烈的产品竞争和市场竞争格局。从三个方面的产品来分析,国外厂商仍然占主导地位,主流厂商包括IBM,BEA,ORACLE,HP, Iona等,而一些新型的中间件公司,如Tibco,webMethod,Vitria也开始携其应用集成中间件或业务流程管理中间件进入中国市场。而国 内一些规模较大的软件公司也开始进入此领域,形成了包括中创软件商用中间件、金蝶Apusic、东方通科技、中关村科技、中和威等在内的一批中间件专业厂 商,东软、用友、信雅达等应用集成商也大量投入中间件产品的研发,国产中间件已经形成了比较完整产品体系,例如,中创软件、中和威推出了基于CORBA标 准的通信中间件产品;中创软件、金蝶软件、东方通科技等公司分别推出了遵循J2EE规范的应用服务器产品;中创软件、中科院软件所、东方通科技推出了消息 中间件产品;中创软件推出了符合OMG标准的企业应用集成套件InforEAI;此外,还有大量的公司投入到中间件开发平台和构件库的建设中。国产中间件 已经广泛成功应用于我国政府、交通、金融、证券、保险、税务、电信、移动、教育、军事等行业或领域的信息化建设,并成为大型应用系统建设不可缺少的一环。

        同国外厂商比较,国内中间件厂商的整体实力还存在很大的差距。如果仅仅从产品的功能上看,我们似乎并不比别人缺什么,但围绕中间件产品从研发到成功应用的 全周期来看,我们还缺很多东西,暂时也很难对国外产品形成真正的竞争威胁。应该说国内中间件产品的成熟度应该是没有问题的,但要市场普遍接受国产中间件产 品,却还有一个相当长的过程。以中创软件Infor系列中间件为例,我们提供的产品可在各类主流操作系统平台和主流数据库上稳定可靠地运行,并可与通行的 各种开发工具紧密融合,产品都具备丰富的系统管理功 能,并已经在大量行业中获得了成功应用经验,即使如此,要真正形成具有号召力的中间件品牌,还有艰巨的路需要一步步去走。同国外优秀中间件产品相比,我们 还有大量需要借鉴和学习的地方,例如在产品的发展方向把握、持续开发能力、产品化工作、市场运作等方面,我们都还要继续加强,不断完善。当然,国内中间件 厂商及其产品也具有非常明显的优势,我们贴近国家信息化的现实需求,已经积累了丰富的领域问题和中间件应用经验,我们的中间件产品可以在实用性和易用性方 面更加贴近本地化市场需求,在技术支持和服务方面也具有相当的优势。

        1.3. 现状分析
        综合产业界的发展情况,我国中间件产业在2004年呈现出如下发展特点:

        技术多样化:中间件已经成为网络应用系统开发、集成、部署、运行和管理必不可少的工具。由于中间件技术涉及网络应用的各个层面,涵盖从基础通讯、数据访问、业务流程集成到应用展现等众多的环节,因此,中间件技术呈现出多样化的发展特点。

        产品平台化:由于传统的中间件技术门槛较高,学习周期较长,已经不能适应信息化建设对中间件的广泛应用需求。为此,中间件产品从解决网络计算中的关键问题 开始向一体化平台方向发展,以提高中间件产品的使用便利性,更全面地满足各种网络应用软件所要求的可靠性、可伸缩性和安全性的需要。

        应用普及化:中间件技术已经是成熟的技术。我国大型信息化建设项目采纳中间件已经成为一种自然、例行的举措。中间件的广泛使用,也进一步促进了应用框架技术的丰富和发展,并为建立企业信息化业务基础架构奠定了基础。

        2. 应用需求的新特点与中间件技术走向

        由于网络世界是开放的、可成长的和多变的,分布性、自治性、异构性已经成为信息系统的固有特征。实现信息系统的综合集成,已经成为国家信息化建设的普遍需求,并直接反映了整个国家信息化建设的水平,中间件通过网络互连、数据集成、应用整合、流程衔接、用户互动等形式,已经成为大型网络应用系统开发、集成、部署、运行与管理的关键支撑软件。

        随着中间件在我国信息化建设中的广泛应用,中间件应用需求也表现出一些新的特点:

        可成长性:Internet是无边界的,中间件必须支持建立在Internet之上的网络应用系统的生长与代谢,维护相对稳定的应用视图

        适应性:环境和应用需求不断变化,应用系统需要不断演进,作为企业计算的基础设施,中间件需要感知、适应变化,提供对下列环境的支持:
        ■ 支持移动、无线环境下的分布应用,适应多样性的设备特性以及不断变化的网络环境
        ■ 支持流媒体应用,适应不断变化的访问流量和带宽约束
        ■ 在DRE(DIstributed Real-time Enbeded)环境下,适应强QoS的分布应用的软硬件约束
        ■ 能适应未来还未确定的应用要求

        可管理性:领域问题越来越复杂、IT应用系统越来越庞大,其自身管理维护则变得越来越复杂,中间件必须具有自主管理能力,简化系统管理成本。
        ■ 面对新的应用目标和变化的环境,支持复杂应用系统的自主再配置
        ■ 支持复杂应用系统的自我诊断和恢复
        ■ 支持复杂应用系统的自主优化
        ■ 支持复杂应用系统的自主防护

        高可信性:提供安全、可信任的信息服务
        ■ 支持大规模的并发客户访问
        ■ 提供99.99%以上的系统可用性
        ■ 提供安全、可信任的信息服务

        这些新的应用特点对中间件技术的发展提出了新的挑战,也决定了中间件技术未来几年的发展方向,为了解决上述问题,中间件技术呈现出丰富多彩的格局,图2给出了解决各类问题的一些新的中间件技术。

        图 2 中间件技术应对应用需求的挑战

        3. 中间件产品与市场走向

        由于应用复杂性及需求广泛性,用户需求多样化导致中间件产品进一步细分,中间件产品在未来3-5年时间仍将呈现多元化发展格局,中间件产品整体走向将表现出如下特点:

        集成化中间件产品将大行其道:覆盖企业级应用设计、开发、集成、部署、运行和管理的集成化中间件产品(Killer App)将会出现。目前,MDA技术已经为中间件设计开发平台与运行平台的整合准备了方法学基础,IBM和BOrland等公司已经开始在其中间件产品中 开始集成MDA工具,从而中间件将为信息系统的资源层、业务逻辑层、展现层提供全面的支持,同时,中间件也将演变成网络应用全生命周期支持工具。

        基于构件的软件开发将成为主流:随着中间件作为网络应用开发环境和运行环境双重支撑平台地位的确立,中间件产品研发重点将从运行平台逐渐向开发平台转移 的,软件构件库管理平台将受到进一步关注。各个层面的构件资源将得到极大地丰富和发展,独立的构件交易商将会出现,CBSD将成为软件开发主流。

        在底层,中间件产品将进一步融合操作系统、数据库管理系统和其它资源管理平台(如元数据管理、目录管理、内容管理)的功能,形成一层厚实的基础软件;在上层,基于中间件的应用框架产品将得到极大丰富,例如面向金融的数据中心平台、电信业务运行支撑平台、电子政务信息交换平台、电子商务供应链管理平台等应用框架型领域中间件将不断丰富完善。

        应用集成和流程集成将成为中间件应用热点,对中间件产品的关注将慢慢从技术层面转换到业务层面。目前,包括CORBA、J2EE等中间件技术平台已经逐渐 成熟,中间件厂商又开始了新型中间件的研制,其目的无非是使中间件产品不断逼近网络应用系统需求,为应用系统的建设沉淀更丰富的共享平台,不断降低应用系 统建设的复杂性。目前的一些技术,如MDA、EAI、BPM、XML、Web Service等,都是从技术平台向业务领域内更大范围的数据集成、应用集成、流程集成、服务集成等转移的产物,而面向服务、以业务流程为中心、业务模型集成技术正逐渐成为中间件产品和市场下一步关注的焦点。

        随着应用集成和数据集成的应用推广,企业将沉淀更多可用的信息资产,在此基础上,商业智能产品将有一个新的回归热潮。商业智能技术、人工智能技术、元数据管理技术、信息可视化技术和XML、CWM等标准进行融合,将有可能在商业智能领域出现新型的中间件产品,其主要作用是对大量信息资产进行有效的定位检索和维护管理,并挖掘信息资产的价值。

     
    展开全文
  • 常见的中间件有哪些?

    万次阅读 多人点赞 2017-05-04 00:27:50
    一般本地开发的话常使用tomcat。 linux系统常使用jetty或apache hpptd 大型的项目就用JBOSS或webloigc 小项目,或者是个人开发tomcat 大项目或者商业项目一般采用:weblgoic/webshere 其他的还有jboss、...

    一般本地开发的话常使用tomcat。

    linux系统常使用jetty或apache hpptd

    大型的项目就用JBOSS或webloigc

    小项目,或者是个人开发tomcat 大项目或者商业项目一般采用:weblgoic/webshere
    其他的还有jboss、glasshfish等
    一些示例项目或者小项目常采用jetty

    tomcat , jboss, weblogic, websphere 一般项目tomcat就可以了

    Tomcat是Sun的JSWDK(JavaServer Web Development Kit)中Servlet的运行环境(servlet容器)。Tomcat是Apache Jakarta软件组织的一个子项目,Tomcat是一个JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基础上发展起来的一个JSP和Servlet规范的标准实现,使用Tomcat可以体验JSP和Servlet的最新规范。经过多年的发展,Tomcat不仅是JSP和Servlet规范的标准实现,而且具备了很多商业Java Servlet容器的特性,并被一些企业用于商业用途。

    JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术

    WebLogic服务器是企业级的应用服务器,支持EJB, 集群以及 ERP(企业资源计划)的连通性 ,开发公司:BEA。

    WebSphere产品系列是IBM公司一套典型的电子商务应用开发工具及运行环境

    答题闯关,过关即送礼!快来参加~

    Tomcat 介绍 如今,基于Web的应用越来越多,传统的Html已经满足不了如今的需求。我们需要一个交互式的Web,于是便诞生了各种Web语言。
    如Asp,Jsp,Php等。当然,这些语言与传统的语言有着密切的联系,如Php基于C和C++语言,Jsp基于Java语言。Tomcat即是一个Jsp和Servlet
    的运行平台。
    Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发
    而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新
    的java产品,可见其在业界的地位。
    Tomcat最新版本是4.0x.4.0x与3.x的架构不同,而是重新设计的。Tomcat4.0x中采用了新的Servlet容器:Catalina,完整的实现了Servlet2.3
    和Jsp1.2规范。Tomcat提供了各种平台的版本供下载,可以从http://jakarta.apache.org上下载其源代码版或者二进制版。由于Java的跨平台
    特性,基于Java的Tomcat也具有跨平台性。
    与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(WebArchive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许
    多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有
    一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而
    classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF
    下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。
    在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器
    中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提
    供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通
    过Web部署和撤销应用。当然本地也可以。
    Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如
    Apache.我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet.这种集成只需要修改一下Apache和
    Tomcat的配置文件即可。
    另外,Tomcat提供Realm支持。Realm类似于Unix里面的group.在Unix中,一个group对应着系统的一定资源,某个group不能访问不属于它的资
    源。Tomcat用Realm来对不同的应用(类似系统资源)赋给不同的用户(类似group)。没有权限的用户则不能访问这个应用。Tomcat提供三种
    Realm,1:JDBCRealm,这个Realm将用户信息存在数据库里,通过JDBC获得用户信息来进行验证。2:JNDIRealm,用户信息存在基于LDAP的服
    务器里,通过JNDI获取用户信息。3:MemoryRealm,用户信息存在一个xml文件里面,上面讲的manager应用验证用户时即使用此种Realm.通过
    Realm我们可以方便地对访问某个应用的客户进行验证。
    在Tomcat4中,你还可以利用Servlet2.3提供的事件监听器功能,来对你的应用或者Session实行监听。Tomcat也提供其它的一些特征,如与SSL
    集成到一块,实现安全传输。还有Tomcat也提供JNDI支持,这与那些J2EE应用服务器提供的是一致的。说到这里我们要介绍一下通常所说的应
    用服务器(如WebLogic)与Tomcat有何区别。应用服务器提供更多的J2EE特征,如EJB,JMS,JAAS等,同时也支持Jsp和Servlet.而Tomcat则功
    能没有那么强大,它不提供EJB等支持。但如果与JBoss(一个开源的应用服务器)集成到一块,则可以实现J2EE的全部功能。既然应用服务器
    具有Tomcat的功能,那么Tomcat有没有存在的必要呢?事实上,我们的很多中小应用不需要采用EJB等技术,Jsp和Servlet已经足够,这时如果
    用应用服务器就有些浪费了。而Tomcat短小精悍,配置方便,能满足我们的需求,这种情况下我们自然会选择Tomcat.
    基于Tomcat的开发其实主要是Jsp和Servlet的开发,开发Jsp和Servlet非常简单,你可以用普通的文本编辑器或者IDE,然后将其打包成WAR即
    可。我们这里要提到另外一个工具Ant,Ant也是Jakarta中的一个子项目,它所实现的功能类似于Unix中的make.你需要写一个build.xml文件,
    然后运行Ant就可以完成xml文件中定义的工作,这个工具对于一个大的应用来说非常好,我们只需在xml中写很少的东西就可以将其编译并打包
    成WAR.事实上,在很多应用服务器的发布中都包含了Ant.另外,在Jsp1.2中,可以利用标签库实现Java代码与Html文件的分离,使Jsp的维护更
    方便。
    Tomcat也可以与其它一些软件集成起来实现更多的功能。如与上面提到的JBoss集成起来开发EJB,与Cocoon(Apache的另外一个项目)集成起
    来开发基于Xml的应用,与OpenJMS
    集成起来开发JMS应用,除了我们提到的这几种,可以与Tomcat集成的软件还有很多。
    Tomcat确实是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性。如今,开源软件越来越收到人们的重视,Linux就是一个成功
    的典型。
    
    多种中间件(, Apache, Nginx, MQ,等)各项性能参数设置、监控及优化;

    Java里的“中间件”有哪些?分别是什么意思?

    中间件:非底层操作系统软件、非业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件,统称中间件。常见的有如下几种:服务中间件、集成中间件、数据中间件、消息中间件、安全中间件。

    用Java实现的中间件,统称Java中间件。中间件,可以理解为类库,介于类库和产品之间。

    说简单一点,就是你的程序A和程序B互相通信使用的协议,程序A,B可以由不同语言不同平台构建。但是协议可以保证他们能互相认识互发的东西。

    简单说,中间件有个很大的特点,是脱离于具体设计目标,而具备提供普遍独立功能需求的模块。这使得中间件一定是可替换的。如果一个系统设计中,中间件是不可替换的,不是架构、框架设计有问题,那么就是这个中间件,在 别处可能是个中间件,在这个系统内是引擎。

    展开全文
  • 1.很多人听过中间件,但是没见过中间件,或者根本不知道中间件是什么,傻X百科上面的定义实在是模糊,所以就有了写这片博客的冲动。 定义:中间件,顾名思义存在于两个系统之间的,起到连接的设备。 (1)为什么是...

    为什么写?
    1.很多人听过中间件,但是没见过中间件,或者根本不知道中间件是什么,傻X百科上面的定义实在是模糊,所以就有了写这片博客的冲动。
    定义:中间件,顾名思义存在于两个系统之间的,起到连接的设备。
    (1)为什么是设备? 硬件和软件在一定程度上可以互用,中间件既可以是硬件,也可以是软件,所以我说是设备,而不定义为,硬件或者软件的一种。
    (2)起到连接作用怎么理解?中间件可以在两个软件之间起到连接(iis服务)。可以在客户机/服务系统之间起到功能(例如web代理服务器)。
    2.中间件的作用:
    (1)一个定义:在操作系统中所有的软件,硬件,固件都可以看作文件。文件有时会具有不同的格式,表现在应用上显示为拥有不同的api接口。
    ①中间件的第一个功能:平衡api接口,使不同的应用通过中间件能够互联。
    (2)统一化接口后,中间件就表现为能够在不同的接口无限制的传输数据。
    ①中间件第二个功能:负载均衡。软件可能直接相连,也可能通过网络相连,在数据量大的时候就会产生拥塞,但是通过中间件,好像拥塞消失了。
    (3)搭建iis服务的时候我们可以看到,创建网站的时候,直接点击就能创建一个网站。Iis服务已经为我们做好了一切的统筹工作,而我们只需要操作就好了。
    ①中间件的第三个功能,提供容器。为一种或者多种应用程序提供服务功能。
    3.中间件的特性:
    (1)易用性。
    ①一般中间件为软件易于控制,易于复制,在计算机上点击,或者在命令行加载就能够使用
    (2)位置透明性
    ①中间件起到的是协调的作用,故在使用的时候我们仿佛看不到中间件的存在。
    (3)消息传输完整性
    ①起到容器,作用和负载均衡作用的时候,要确保的就是消息传输的完整性,如果一个消息通过你的中间件,本质改变了。那么就没有意义了。
    1)小提示:数据和信息。数据是承载信息的,信息是数据的抽象,世间万物都可以变成数据,破坏数据的结构就会毁坏信息。
    4.中间件,容器,服务器:
    (1)客户端--------网络---------服务器---------中间件-------数据库
    (2)客户端在访问的时候,如果访问静态网页就直接和服务器操作,{例如get(获取数据),post,head,opting,put,delete,trace,connect。服务器返回信息,1**(收到,继续执行),2**(成功,操作成功处理),3**(重定向,页面不在这里)4**(客户端错误),5**(服务器错误),}客户端直接和服务器作用,而不经过中间件和数据库作用。
    (3)客户端访问动态网页,例如php之类的网页,客户端和服务器作用完,服务器和数据库作用,中间就用到中间件。
    (4)中间件,包含容器(例子windowns上面的iis服务)
    (5)有的时候,中间件和服务器是架构在一起的(透明性)。

    展开全文
  • 什么是中间件

    万次阅读 多人点赞 2017-05-04 00:18:28
    初次接触到中间件这个词是去年一次天猫的一面时,当面试官问到研究过那些开源框架和中间件时,一句:中间件?让自己尴尬了, 面试官接着说:就是类似WebLogic 等等一下开发时你用到的一些技术。 下面让我们来学习...

    初次接触到中间件这个词是去年一次天猫的一面时,当面试官问到研究过那些开源框架和中间件时,一句:中间件?让自己尴尬了,

    面试官接着说:就是类似WebLogic 、Tomcat、Jboss、等等一些开发时你用到的一些技术。

    下面让我们来学习下,什么是中间件?中间件是干什么用的


    1. 由来

      因为工作的原因,我从金蝶集团调入金蝶中间件公司工作以来,经常遇到一个问题就是中间件公司是个什么公司,中间件是什么?,金蝶不是做ERP的吗?怎么也做中间件?。这是我以前在金蝶集团时无法想象的问题。因为金蝶,金蝶ERP的品牌以及大众对ERP的了解,是无需我解析什么是ERP,什么是财务软件一类的问题的。

      毕竟,中间件在实际的应用过程中,是对应用软件起到支撑作用,最终用户并不直接使用中间件,中间件不是大众消费类软件产品。因此,除非是一个行业专业人士,一般不大可能与中间件打交道,不太了解什么是中间件。

      因此,在系统软件之中,操作系统、数据库、中间件的三驾马车,中间件是最神秘的。因为,好歹大家通过Windows基本上会了解操作系统是个什么东西,尽管不会很全面,很专业,毕竟是有感觉的。数据库,虽然没有直接见过,但基本上明白数据是要一个仓库来储存的,因此,也大致知道数据库管理系统是干什么的。

      长期以来,中间件是一个专业化非常强的细分产业。因为中间件的技术门槛比较高,玩家也不多,无论是国外还是国内都是如此。因此,行业内对什么是中间件并不特别在意。而公司名称直接叫中间件的就更少了,金蝶中间件应该是国内外直接在公司名称中冠以中间件字眼最早,也是很少的公司之一。另一方面,因为中间件软件还处于发展阶段,还没有完全成熟,因此对中间件的定义也就没有深究,或者权威的说法。

      但现在情况有点变化,其中一个原因在于2008年底,国家启动了核高基重大科技专项,在基础软件领域明确提出重点支持操作系统、数据库、中间件、文字处理等基础软件产业的自主创新,几乎一夜之间大大小小的软件公司都宣称是做中间件的了,只要不是做最终应用软件的,他们的产品都叫中间件了,一时间,中间件变得蓬勃发展起来了。

      作为中间件行业内的专业化和领先企业来说,大家都重视起中间件来了,这是好事,说明社会上重视了。对行业的发展和繁荣固然重要,但这也隐含了重大的风险。中间件名字被滥用,无论是对用户,对这个产业,对政府和投资人来说,都会有负面的影响。鱼目混珠,泥沙俱下的局面,对中间件产业的正常发展未必就是好事情了,也可能对真正的中间件自主创新带来许多困扰,模糊了中间件的本质,可能会弱化中间件核心技术的创新和发展。

      因此,在这种情况下,无论是对行业内,还是行业外,突然什么是中间件的问题变成了一个大问题了。

      本文试图就中间件的来龙去脉,外延内涵和前世今生,来一个全面的阐释。一家之言,权作业界参考,希望带动大家做一些深入的思考。

      2. 中间件的起源

      2.1 中间件发展的历史

      事情从1946年说起,世界上第一台电子计算机埃尼阿克诞生,人类进入信息时代。1955年,约翰巴克斯发明了最早的程序语言Fortran,现代意义上的软件就诞生了。

      1964年,IBM发布OS/360操作系统,软件与硬件分离,同时,软件成为一个独立的产业正式登上产业界的舞台。中间件就是软件产业不断发展过程中自然产生的。

      90年代,文顿·瑟夫这位互联网之父的发明成为改变IT业的重大革命性创新。互联网促使分布式系统和网络应用的诞生,中间件就是伴随网络技术的产生、发展而兴起的,可以说没有网络就没有现代意义上的中间件。因为,网络环境需要解决异构分布网络环境下软件系统的通信、互操作、协同、事务、安全等共性问题,提高异构分布网络环境下软件系统的互操作性、可移植性、适应性、可靠性等问题。

      1968年IBM发布CICS交易事务控制系统,使得应用软件与系统服务分离,这是中间件技术萌芽的标志,因为CICS还不是分布式环境的产物,因此我们往往还不将CICS作为正式的中间件系统。

      一般来说,我们将1990年诞生于ATT公司的BELL实验室的Tuxedo系统(后来被NOVELL从ATT公司随着UNIX系统一起买走,后来又卖给了BEA公司,现在归于ORACLE公司旗下了)作为中间件的诞生标志。Tuxedo解决了分布式交易事务控制问题,中间件开始成为网络应用的基础设施,中间件正式成型,这是最早的交易中间件。

      1994年IBM发布消息队列服务MQ系列产品,解决分布式系统异步、可靠、传输的通讯服务问题,消息中间件诞生。

      1995年,JAVA之父James Gosling发明JAVA语言,JAVA提供了跨平台的通用的网络应用服务,成为今天中间件的核心技术。JAVA是第一个天生的网络应用平台,特别是J2EE发布以来,JAVA从一个编程语言,演变为网络应用架构,成为应用服务平台的事实标准。应用服务器中间件,成为中间件技术的集大成者,也成为事实上的中间件的核心。

      2001年,微软发布.NET,中间件演变为.NET和JAVA两大技术阵营。但由于.NET还不是一个完全开放的技术体系,只有一个玩家,因此,虽然.NET也是一种中间件,但由于IBM/ORACLE/SUN/SAP等巨头都无一例外成了JAVA阵营的支持者,因此,我们习惯上提到中间件时,往往不包括.NET中间件体系。

      以上谈的是历史,但透过历史事实背后,为什么会出现中间件,这其中的本质因素是什么?

      2.2 中间件发展的驱动力

      中间件出现的驱动力主要来自软件研发过程碰到的种种问题。从软件出现最早是用于科学计算,然后是计算机辅助设计、辅助制造等等工业应用。在企业管理领域大规模应用后,业务需求不断的变化、系统不断增加、流程更复杂、系统越来越不堪重负,出现了需求交付方面的重大挑战,以至于人们用软件危机来描述软件工业所面临的困境。

      总结起来,软件工业面临的主要问题是四个方面:质量问题、效率问题、互操作问题、灵活应变问题。这些问题今天依然困扰着这个行业。

      造成这个局面的原因是异构性和标准规范的滞后。

    • 屏蔽异构性

      异构性表现在计算机的软硬件之间的异构性,包括硬件(CPU和指令集、硬件结构、驱动程序等),操作系统(不同操作系统的API和开发环境)、数据库(不同的存储和访问格式)等等。长期以来,高级语言依赖于特定的编译器和操作系统API来编程,而他们是不兼容的,因此软件必须依赖于开发和运行的环境。

      造成异构的原因源自市场竞争、技术升级以及保护投资等因素。希望屏蔽异构平台的差异性问题是促成中间件发展的驱动力之一。

    • 实现互操作

      因为异构性,产生的结果是软件依赖于计算环境,使得各种不同软件之间在不同平台之间不能移植,或者移植非常困难。而且,因为网络协议和通信机制的不同,这些系统之间还不能有效地相互集成。

      造成互操作性不好的原因,主要是标准的滞后。解决软件之间的互操作性问题也是促成中间件发展的驱动力之一。

    • 共性凝练和复用

      软件应用领域越来越多,相同领域的应用系统之间许多基础功能和结构是有相似性的,每次开发系统都从零开始绝对不是一种好的方法,也是对质量和效率的很大的伤害。

      尽可能多地凝练共性并复用以提高软件开发效率和质量,通过中间件通过提供简单、一致、集成的开发和运行环境,简化分布式系统的设计、编程和管理,这也是中间件发展的重要驱动力。

      在长期的探索过程中,解决软件的四个问题的办法总结起来两个方面:工程方法、平台与技术。

      工程方法就是用工业工程、系统工程的理论、方法和体系来解决软件研发过程中的管理问题,包括团队管理、项目管理、质量控制等等,这就是软件工程。除了软件工程方法之外,我们发明了更多的架构规划、设计和实施的方法,不断累积领域的知识与经验等等。

      更好的技术手段,包括更好的程序设计语言、更好的平台和软件开发技术,如面向对象、组件开发、面向服务等等。而这方面,在技术上逐渐发展的成果大部分都凝聚在今天的中间件平台之中。

      而这些更好的技术手段,从本质上是通过复用、松耦合、互操作(标准)等机制来提高软件质量、加快软件研发效率、使研发出来的产品能够相互集成并灵活适应变化。
    这些因素逐渐促成了中间件软件的形成和发展。

      3. 中间件的概念

      讲了这么多,究竟什么是中间件,也就是中间件的定义是什么?

      针对这个问题,应该说还没有一个标准的定义,或者说还没有完全取得学术界和产业界的共识。

      顾名思义,中间件就是处于中间的软件。但这种不是从功能,或者特性来定义的概念,而是用位置来定义的名字,就容易被不同的人从不同角度赋予其不同的含义。

      IDC曾经给中间件下的定义是中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

      我国学术界一般认可的定义是中间件是指网络环境下处于操作系统、数据库等系统软件和应用软件之间的一种起连接作用的分布式软件,主要解决异构网络环境下分布式应用软件的互连与互操作问题,提供标准接口、协议,屏蔽实现细节,提高应用系统易移植性(北京大学梅宏)。

      中科院软件所研究员仲萃豪形象地把中间件定义为平台+通信。这个定义限定了只有用于分布式系统中的此类软件才能被称为中间件,同时此定义还可以把中间件与支撑软件和实用软件区分开来。

      中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。形象地说就是上下之间的中间。

      此外,中间件主要为网络分布式计算环境提供通信服务、交换服务、语义互操作服务等系统之间的协同集成服务,解决系统之间的互连互通问题。形象地说就是所谓左右之间的中间。

      要深入理解什么是中间件,形式化的定义固然重要,我们还得从概念本身去深入理解其核心特征才是最重要的。要理解一个概念,从内涵和外延两个方面去描述是哲学上非常重要的一套方法体系。

      3.1 中间件的特征(内涵)

      总结分析,中间件有几个非常重要的特征是必须具备的:

    • 平台化

      所谓平台就是能够独立运行并自主存在,为其所支撑的上层系统和应用提供运行所依赖的环境。显然,不是所有的系统或者应用都可以称之为平台的。中间件是一个平台,因此中间件是必须独立存在,是运行时刻的系统软件,它为上层的网络应用系统提供一个运行环境,并通过标准的接口和API来隔离其支撑的系统,实现其独立性,也就是平台性。

      因此,目前许多的开发语言、组件库和各种报表设计之类的软件,很难满足平台性,将这类软件叫中间件,是很不合适的。例如,JAVA是一种语言,这种语言的开发工具和开发框架,如Eclipse、JBuilder、Struts,Hibernate等等就不能称为中间件,充其量叫中间件开发工具,而不能叫中间件本身,就如同各种建筑工程设备和机械,如吊臂、搅拌机等不能叫建筑,而只能成为建筑工具一样。而J2EE应用服务器提供JAVA应用的运行环境,就是经典的中间件。

    • 应用支撑

      中间件的最终目的是解决上层应用系统的问题,而且也是软件技术发展到今天对应用软件提供最完善彻底的解决方案。

      高级程序设计语言的发明,使得软件开发变成一个独立的科学和技术体系,而操作系统平台的出现,使得应用软件通过标准的API接口,实现了软件与硬件的分离。

      现代面向服务的中间件在软件的模型、结构、互操作以及开发方法等四个方面提供了更强的应用支撑能力:

      模型:构件模型弹性粒度化,即通过抽象层度更高的构件模型,实现具备更高结构独立性、内容自包含性和业务完整性的可复用构件,即服务。并且在细粒度服务基础上,提供了更粗粒度的服务封装方式,即业务层面的封装,形成业务组件,就可以实现从组件模型到业务模型的全生命周期企业建模的能力。

      结构:结构松散化,即,将完整分离服务描述和服务功能实现以及服务的使用者和提供者,从而避免分布式应用系统构建和集成时常见的技术、组织、时间等不良约束。

      互操作:交互过程标准化,即,将与互操作相关的内容进行标准化定义,如服务封装、描述、发布、发现、调用等契约,通信协议以及数据交换格式等等。最终实现访问互操作、连接互操作和语义互操作。

      开发集成方法:应用系统的构建方式由代码编写转为主要通过服务间的快捷组合及编排,完成更为复杂的业务逻辑的按需提供和改善,从而大大简化和加速应用系统的搭建及重构过程。

      而要最终解决软件的质量问题、效率问题、互操作问题、灵活应变问题这四大问题,需要在软件技术的内在结构(Structure)、架构(Architecture)层面进行思考。

      解决这些问题,技术的本质是复用、松耦合、互操作(标准)等软件技术的内在机制。这也是中间件技术和产品的本质特征。

    • 软件复用

      软件复用,即软件的重用,也叫再用,是指同一事物不作修改或稍加改动就多次重复使用。从软件复用技术的发展来看,就是不断提升抽象级别,扩大复用范围。最早的复用技术是子程序,人们发明子程序,就可以在不同系统之间进行复用了。但是,子程序是最原始的复用,因为这种复用范围是一个可执行程序内复用,静态开发期复用,如果子程序修改,意味着所有调用这个子程序的程序必须重新编译、测试和发布。

      复用对象复用范围

    复用对象 复用范围
    子程序 一个可执行程序内复用,静态开发期 复用
    组件(DLL,Com等) 系统内复用,动态运行期复用
    企业对象组件(Com+,.NET,EJB等) 企业网络内复用,不同系统之间复用
    服务 (如WebService,SCA/SDO) 不同企业之间,全球复用,动态可配置

      为了解决这个问题,发明了组件(或者叫控件),如MS操作系统下的DLL组件。组件将复用提升了一个层次,因为组件可以在一个系统内复用(同一种操作系统),而且是动态、运行期复用。这样组件可以单独发展,组件与组件调用者之间的耦合度降低。

      为解决分布式网络计算之间的组件复用,人们发明了企业对象组件,如(COM+, .NET, EJB等),或者叫分布式组件。通过远程对象代理,来实现企业网络内复用,不同系统之间复用。

      传统中间件的核心是组件对象的管理。但分布式组件也是严重依赖其受控环境,由于构件实现和运行支撑技术之间存在着较大的异构性,不同技术设计和实现的构件之间无法直接组装式复用。

      而现代中间件的发展重要趋势就是以服务为核心,如WebService, SCA/SDO等。通过服务,或者服务组件来实现更高层次的复用、解耦和互操作,即SOA架构中间件。

      因为服务是通过标准封装,服务组件之间的组装、编排和重组,来实现服务的复用。而且这种复用,可以在不同企业之间,全球复用,达到复用的最高级别,并且是动态可配置的复用。

    • 耦合关系

      基于SOA架构的中间件,在松耦合解耦过程也发展到了最后的境界。传统软件将软件之中核心三部分——网络连接、数据转换、业务逻辑全部耦合在一个整体之中,形成铁板一块的软件,牵一发而动全身,软件就难以适应变化。分布式对象技术将“连接逻辑”进行分离,消息中间件将“连接逻辑”进行异步处理,增加了更大的灵活性。消息代理和一些分布式对象中间件将数据转换也进行了分离。而SOA架构,通过服务的封装,实现了业务逻辑与网络连接、数据转换等进行完全的解耦。

    软件技术的不断解耦的过程

    • 互操作性

      传统软件互操作技术也存在问题。互联网前所未有的开放性意味着各节点可采用不同的中间件技术,对技术细节进行了私有化的约束,构件模型和架构没有统一标准,从而导致中间件平台自身在构件描述、发布、发现、调用、互操作协议及数据传输等方面呈现出巨大的异构性。各种不良技术约束的结果是软件系统跨互联网进行交互变得困难重重,最终导致了跨企业/部门的业务集成和重组难以灵活快速的进行。

      在软件的互操作方面,传统中间件只是实现了访问互操作,即通过标准化的API实现了同类系统之间的调用互操作,而连接互操作还是依赖于特定的访问协议,如JAVA使用RMI,CORBA使用IIOP等。而SOA通过标准的、支持Internet、与操作系统无关的SOAP协议实现了连接互操作。而且,服务的封装是采用XML协议,具有自解析和自定义的特性,这样,基于SOA的中间件还可以实现语义互操作。

    基于服务的中间件

      总之,服务化体现的是中间件在完整业务复用、灵活业务组织方面的发展趋势,其核心目标是提升IT基础设施的业务敏捷性。因此,中间件将成为SOA的主要实现平台。

      3.2 中间件的分类(外延)

      中间件所包括的范围十分广泛,针对不同的应用需求涌现出多种各具特色的中间件产品。从功能性外延来看,中间件包括交易中间件、消息中间件、集成中间件等各种功能性的中间件技术和产品。

      现在,中间件已经成为网络应用系统开发、集成、部署、运行和管理必不可少的工具。由于中间件技术涉及网络应用的各个层面,涵盖从基础通讯、数据访问到应用集成等众多的环节,因此,中间件技术呈现出多样化的发展特点。

      根据中间件在软件支撑和架构的定位来看,基本上可以分为三大类产品:应用服务类中间件、应用集成类中间件、业务架构类中间件。

    • 应用服务类中间件

      为应用系统提供一个综合的计算环境和支撑平台,包括对象请求代理(ORB)中间件、事务监控交易中间件、JAVA应用服务器中间件等。

      随着对象技术与分布式计算技术的发展,两者相互结合形成了分布对象计算,并发展为当今软件技术的主流方向。1990年底,对象管理组织OMG首次推出对象管理结构OMA(Object Management Architecture),对象请求代理(Object Request Broker)是这个模型的核心组件。它的作用在于提供一个通信框架,透明地在异构的分布计算环境中传递对象请求。CORBA规范包括了ORB的所有标准接口,是对象请求代理的典型代表。

      随着分布计算技术的发展,分布应用系统对大规模的事务处理提出了需求,比如商业活动中大量的关键事务处理。事务处理监控界于Client和Server之间,进行事务管理与协调、负载平衡、失败恢复等,以提高系统的整体性能。它可以被看作是事务处理应用程序的操作系统。这类被称为交易中间件,适用于联机交易处理系统,主要功能是管理分布于不同计算机上的数据的一致性,保障系统处理能力的效率与均衡负载。交易中间件所遵循的主要标准是X/open DTP模型,典型的产品是Tuxedo。

      JAVA从2.0企业版之后,不仅仅是一种编程语言,而且演变为一个完整的计算环境和企业架构。为JAVA应用提供组件容器,用来构造Internet应用和其它分布式构件应用,是企业实施电子商务的基础设施,这种应用服务器中间件发展到为企业应用提供数据访问、部署、远程对象调用、消息通信、安全服务、监控服务、集群服务等强化应用支撑的服务。使得JAVA应用服务器成为了事实上的应用服务器工业标准。由于它的开放性,使得交易中间件和对象请求代理逐渐融合到应用服务器之中。典型的应用服务器产品包括IBM Websphere Application Server、Oracle Weblogic Application Server和金蝶Apusic Application Server等。

    • 应用集成类中间件

      应用集成类中间件是提供各种不同网络应用系统之间的消息通信、服务集成和数据集成的功能,包括常见的消息中间件、企业集成EAI、企业服务总线以及相配套的适配器等。

      消息中间件指的是利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可在分布环境下扩展进程间的通信,并支持多通讯协议、语言、应用程序、硬件和软件平台,实现应用系统之间的可靠异步消息通信,能够保障数据在复杂的网络中高效、稳定、安全、可靠的传输,并确保传输的数据不错、不重、不漏、不丢。目前流行的消息中间件产品有IBM的MQSeries、 BEA的MessageQ、金蝶Apusic MQ等。

      企业应用整合,仅指企业内部不同应用系统之间的互连,以期通过应用整合实现数据在多个系统之间的同步和共享。这种类似集线器的架构模式是在基于消息的基础上,引入了前置机-服务器的概念,使用一种集线器/插头(hub-and-spoke)的架构,将消息路由信息的管理和维护从前置机迁移到了服务器上,巧妙的把集成逻辑和业务逻辑分离开来,大大增加了系统弹性。由于前置机和服务器之间不再直接通信,每个前置机只通过消息和服务器之间通信,将复杂的网状结构变成了简单的星型结构。典型的企业应用集成EAI的产品包括Tibico和Informatica等公司产品。

      随着SOA思想和技术的逐渐成熟,EAI发展到透过业务服务的概念来提供IT的各项基本应用功能,让这些服务可以自由地被排列组合、融会贯通,以便在未来能随时弹性配合新的需求而调整。Web Services是SOA的一种具体实现方式,SOA的世界是由服务提供者(Service Provider)、服务请求者(Service Requester) 以及服务代理者(Service Broker)所组成,目标是将所有具备价值的IT资源,不论是旧的或新的,通通都能够透过Web Services的包装,成为随取即用的IT资产,并可将各种服务快速汇整,开发出组合式应用,达到整合即开发的目的。SOA的架构只是实现和解决了服务模块间调用的互操作问题,为了更好的服务于企业应用,引入了企业服务总线的应用架构(Enterprise Service Bus,ESB)。这一构架是基于消息通信、智能路由、数据转换等技术实现的。ESB提供了一个基于标准的松散应用耦合模式,这就是企业服务总线中间件,是一种综合的企业集成中间件。典型的ESB产品包括IBM Websphere ESB、Oracle公司的Weblogic ESB以及金蝶Apusic ESB等。

    • 业务架构类中间件

      作为共性的凝练,中间件不仅要从底层的技术入手,将共性技术的特征抽象进中间层,还要更多地把目光投向到业务层面上来,根据业务的需要,驱动自身能力的不断演进,即,不断出现的新的业务需要驱动了应用模式和信息系统能力的不断演进,进而要求中间件不断地凝练更多的业务共性,提供针对性支撑机制。近年来,这一需求趋势愈发明显,越来越多的业务和应用模式被不断地抽象进入中间件的层次,如业务流程流、业务模型、业务规则、交互应用等等,其结果是中间件凝练的共性功能越来越多,中间件的业务化和领域化的趋势非常明显。

      业务架构类中间件包括业务流程、业务管理和业务交互等几个业务领域的中间件。

      业务流程是处理业务模型的非常重要方法。管理流程与各职能部门和业务单元有密切关系,须藉各部门间的紧密协调,以达到企业运营和管理功能的目标。在业务流程支持方面,从早期的WfMC定义的工作流,到基于服务的业务流程规范BPEL,由业务流程的支撑,逐渐形成了完整的业务流程架构模型,包括流程建模、流程引擎、流程执行、流程监控和流程分析等。有名的业务流程中间件包括基于工作流的IBM Lotus Workflow,基于BPEL的IBM Webshpere Process Server以及同时支持工作流和BPEL的金蝶Apusic BPM等。

      业务管理就是对业务对象的建模和业务规则的定义、运行和监控的中间件平台。策略管理员和开发人员将业务逻辑捕获为业务规则。使用规则管理器可以将规则轻松地嵌入 Web、现有应用程序和后台办公应用程序。常见的业务管理中间件包括IBM Websphere ILOG 业务规则管理系统,金蝶BOS等。

      业务交互的中间件平台提供组织的合作伙伴、员工和客户通过WEB和移动设备等交互工具,实现基于角色、上下文、操作、位置、偏好和团队协作需求的个性化的用户体验。这种门户服务器软件基于标准Portlet组合的应用程序访问框架,实现用户集成和交互集成,构建灵活、基于 SOA 的应用架构。典型的门户中间件有IBM Websphere Portal Server和金蝶Apusic Portal Server等。

      4. 中间件的未来

      中间件是互联网时代的IT基础设施,提供业务的灵活性,消除信息孤岛,提高IT的研发和运营效率。作为网络计算的核心基础设施,中间件正在呈现出服务化、自治化、业务化、一体化等诸多新的发展趋势,中间件进入2.0时代,将极大提升互联网统一计算平台的敏、睿、融、和能力。

    • 中间件将变宽变厚

      以互联网为核心的多网融合产生了丰富多样的新型网络应用模式,作为主流的应用运行支撑环境,中间件无处不在,越来越多的应用模式被抽象到中间件层,中间件将变宽变厚。

    • 中间件将面向服务、易于集成

      随着SOA技术逐渐成为主流,以及异构系统的集成问题日益严峻,中间件将向面向服务、易于集成的方向发展。

    • 中间件将向一体化的方向发展

      中间件产品的种类日趋多样(如交易中间件、消息中间件、应用服务器、集成中间件、业务中间件等),但其技术架构将向一体化的方向发展,主要包括:

      统一内核,易于演化:各大厂商的中间件产品将构建在统一内核之上,使其易于平台演化。

      统一编程模型,易于开发:不同中间件产品提供了不同的编程模型,这些编程模型将趋向统一,从而达到易于开发的目的。

      统一管理模型,易于系统维护:不同中间件产品提供了不同的管理工具与管理手段,这些管理工具与手段将趋向统一,使其易于管理,降低运维成本。

    • 中间件产品将支持云计算,易于交付

      中间件产品将成为云计算的支撑平台,使应用易于交付。

    • 后端平台深度融合

      一个大胆的设想是:未来五年,浏览器将统一前端,而后端平台(中间件、操作系统、 数据库)走向深度融合。(对中间件的未来发展趋势的详细介绍参加另文《中间件技术的发展趋势分析》,在此不做详细论述。)

      综上所述,我们可以认为中间件是一种独立的系统软件平台,为网络应用软件提供综合的服务和完整的计算环境,借助这种软件使得网络应用能够实现集成,达到业务的协同,实现业务的灵活性。

    本文由金蝶中间件有限公司总经理 奉继承 博士 撰写

    展开全文
  • 什么是中间件

    千次阅读 2018-11-13 22:05:44
    我国企业从20世纪80年代开始就逐渐进行信息化建设,由于方法和体系的不成熟,以及企业业务和市场需求的不断变化,一个企业可能同时运行着多个...中间件便是解决之道,它用自己的复杂换取了企业应用的简单。   ...
  • 中间件概念

    2019-06-04 09:06:50
    1. 中间件概念 http://expressjs.com/en/guide/using-middleware.html 中件的本质就是一个请求处理方法,我们把用户从请求到响应的整个过程分发到多个中间件中去处理,这样做的 日的是提高代码的灵活性,动态可扩展的。...
  • 消息中间件

    2020-11-11 10:51:55
    一、消息中间件(MQ)的定义 其实并没有标准定义。一般认为,消息中间件属于分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。 二、 为什么...
  • 中间件分类

    千次阅读 2019-09-11 10:33:33
    一、中间件是什么? 非底层操作系统软件、非上层业务应用软件,不是直接给最终用户使用的,不能直接给客户带来价值的软件,统称中间件。 程序A和程序B互相通信使用的协议,程序A,B可以由不同语言不同平台构建。...
  • 中间件相关问题整理

    万次阅读 2020-04-07 11:50:15
    备注:针对基本问题做一些基本的总结,不是详细解答! 1.用过哪些MQ,怎么用的,和其他mq比较有什么优缺点,MQ的连接是线程安全的吗? 2.MQ系统的数据如何保证不丢失? ...
  • 点评主流中间件技术平台

    千次阅读 2005-01-12 18:32:00
    于是集软件复用、分布式对象计算、企业级应用开发等技术为一体的"基于中间件软件开发"(CBSD,Component Based Sortware Development)应运而生,这种技术以软件架构为组装蓝图,以可复用软件构件为组装模块,支持组装...
  • scrapy内置中间件的顺序

    万次阅读 2020-07-20 21:54:18
    scrapy的内置中间件顺序以及默认settings配置
  • 消息中间件(一)MQ详解及四大MQ比较

    万次阅读 多人点赞 2018-08-29 22:05:58
    一、消息中间件相关知识 1、概述 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息...
  • 手把手教你如何玩转消息中间件(ActiveMQ)

    万次阅读 多人点赞 2018-07-15 18:07:39
    非操作系统软件,非业务应用软件,不是直接给最终用户使用,不能直接给用户带来价值的软件,我们就可以称为中间件(比如Dubbo,Tomcat,Jetty,Jboss都是属于的)。 什么是消息中间件? 百度百科解释:消息...

空空如也

1 2 3 4 5 ... 20
收藏数 278,436
精华内容 111,374
关键字:

中间件