中间件是伴随着网络应用的发展而逐渐成长起来的技术体系。最初的中间件发展驱动力是需要有一个公共的标准的应用开发平台来屏蔽不同操作系统之间的环境和API差异,也就是所谓操作系统与应用程序之间“中间”的这一层叫中间件。但随着网络应用的需求,解决不同系统之间的网络通信、安全、事务的性能、传输的可靠性、语义的解析、数据和应用的整合这些问题,变成中间件的更重要的驱动因素。因此,相继出现了解决网络应用的交易中间件、消息中间件、集成中间件等各种功能性的中间件技术和产品。
现在,中间件已经成为网络应用系统开发、集成、部署、运行和管理必不可少的工具。由于中间件技术涉及网络应用的各个层面,涵盖从基础通讯、数据访问到应用集成等众多的环节,因此,中间件技术呈现出多样化的发展特点。
传统中间件在支持相对封闭、静态、稳定、易控的企业网络环境中的企业计算和信息资源共享方面取得了巨大成功,但在新时期以开放、动态、多变的互联网(Internet)为代表的网络技术冲击下,还是显露出了它的固有局限性,如功能较为专一化,产品和技术之间存在着较大的异构性,跨互联网的集成和协同工作能力不足,僵化的基础设施缺乏随需应变能力等等,在互联网计算带来的巨大挑战面前显得力不从心,时代要求新的技术变革。
中间件技术的发展方向,将聚焦于消除信息孤岛,推动无边界信息流,支撑开放、动态、多变的互联网环境中的复杂应用系统,实现对分布于互联网之上的各种自治信息资源(计算资源、数据资源、服务资源、软件资源)的简单、标准、快速、灵活、可信、高效能及低成本的集成、协同和综合利用,提高组织的IT基础设施的业务敏捷性,降低总体运维成本,促进IT与业务之间的匹配。中间件技术正在呈现出业务化、服务化、一体化、虚拟化等诸多新的重要发展趋势。
业务化:中间件正在“变厚变宽”
中间件的本质特征是对计算环境的抽象和对应用共性的凝炼。十年来,中间件的发展多在计算环境的抽象上。目前的中间件可以在不同操作系统、不同网络环境下提供各种应用服务。
抽取分布系统构造中的共性问题,封装这些共性问题的解决机制,对外提供简单统一的接口,从而减少开发人员在解决这些共性问题时的难度和工作量。因此,其显著特点之一就是自底向上的技术导向,它典型地是对操作系统、网络、编程语言等基础软件能力的抽象和封装,其关注主要聚焦于分布式应用构建的技术细节。
中间件变宽变厚
越来越多的网络应用将被抽象形成标准的平台服务,加入到中间件之中,成为重要的技术特征。
业务化代表了中间件对复杂业务支持方面的发展趋势,即,从自底向上技术驱动转变为更多自顶向下的应用层的业务驱动,凝练更多的应用和业务模式,支持复杂业务的开放式多方协同和按需集成能力。
众所周知,对组织而言,通过IT对信息进行有效的管理及利用是其业务成功的关键因素,IT是要为业务服务的。中间件技术作为企业计算的核心基础设施之一,仅仅关注技术本身是不够的,尤其是在当今全球化趋势之中谋求生存和发展,IT信息系统及其基础设施对战略和业务的有效支持是至关重要的。因此,作为共性的凝练,中间件不仅要从底层的技术入手,将共性技术的特征抽象进中间层,还要更多地把目光投向到业务层面上来,根据业务的需要,驱动自身能力的不断演进,即,不断出现的新的业务需要驱动了应用模式和信息系统能力的不断演进,进而要求中间件不断地凝练更多的业务共性,提供针对性支撑机制。近年来,这一需求趋势愈发明显,越来越多的业务和应用模式被不断地抽象进入中间件的层次,如业务流程流、业务模型、业务规则、交互应用等等,其结果是中间件凝练的共性功能越来越多,形象的看,中间件的发展趋势之一就是变得越来越“厚”。
此外,在以互联网为代表的新技术推动下,伴随全球化的脚步以及国民经济和国家信息化建设的高速发展,企业/政府的业务合作和资源共享的广度、深度和频度都在不断的拓展,企业竞争本身已经从单纯的个体间行为演变为产业链层面上的激烈竞争,而电子商务的建设也呈现出从边沿向纵深的发展趋势。企业信息化在ERP打破企业内部界限,形成企业内部无边界信息流的情况下,全程电子商务将实现企业、伙伴、供应商和客户的互联互通,打破企业间的界限,形成跨行业/组织/部门之间无边界信息流,复杂业务协同往往需要将原本零散、片段的业务流程(人工/自动)和信息优化进一个集成的环境,多个业务实体在互联网提供的广泛连通性基础之上进行开放、灵活、可信的信息交换和互操作,实现企业间的业务协同,及时响应变化并有效的支持业务战略的交付,从而快速形成新的竞争力优势。因此,从支持基于互联网广泛连通性的复杂业务协同和集成的角度来看,形象地说,中间件的另一发展趋势是变得越来越“宽”。
服务化:中间件将面向服务,易于集成
服务化代表了中间件在提升IT基础设施的业务敏捷性方面的发展趋势,即支持对基于互联网的数据存储、软件和服务资源进行标准化的抽象和能力提供,桥接不同业务平台之间的技术异构性,并提供业务按需灵活组织的能力,让IT与业务密切匹配,提升组织的业务敏捷性。
企业最根本的痛点在于其易变的业务和僵化的IT基础设施之间的尖锐矛盾。业务的易变性是企业试图通过业务差异化而谋求利益最大化的必然结果,是激烈的市场竞争的产物。问题在于,企业常常发现:业务需要改变,但IT却不能迅速地加以响应。为什么?根本原因就在于目前最重要的软件开发技术上存在着严重问题未能解决。
解决这些问题,技术的本质是复用、松耦合、互操作(标准)等软件技术的内在机制。软件复用,即软件的重用,也叫再用,是指同一事物不作修改或稍加改动就多次重复使用。从软件复用技术的发展来看,就是不断提升抽象级别,扩大复用范围。最早的复用技术是子程序,人们发明子程序,就可以在不同系统之间进行复用了。但是,子程序是最原始的复用,因为这种复用范围是一个可执行程序内复用,静态开发期复用,如果子程序修改,意味着所有调用这个子程序的程序必须重新编译、测试和发布。
为了解决这个问题,发明了组件(或者叫控件),如MS操作系统下的DLL组件。组件将复用提升了一个层次,因为组件可以在一个系统内复用(同一种操作系统),而且是动态、运行期复用。这样组件可以单独发展,组件与组件调用者之间的耦合度降低。
为解决分布式网络计算之间的组件复用,人们发明了企业对象组件,如(Com+,.NET,EJB等),或者叫分布式组件。通过远程对象代理,来实现企业网络内复用,不同系统之间复用。
传统中间件的核心是组件对象的管理。但分布式组件也是严重依赖其受控环境,由于构件实现和运行支撑技术之间存在着较大的异构性,不同技术设计和实现的构件之间无法直接组装式复用。
而现代中间件的发展重要趋势就是以服务为核心,如WebService,SCA/SDO等。通过服务,或者服务组件来实现更高层次的复用、解耦和互操作,即SOA架构中间件。
因为服务是通过标准封装,服务组件之间的组装、编排和重组,来实现服务的复用。而且这种复用,可以在不同企业之间,全球复用,达到复用的最高级别,并且是动态可配置的复用。
OA架构在松耦合,将中间件的解耦过程也发展到了最后的境界。传统软件将软件之中核心三部分网络连接、数据转换、业务逻辑全部耦合在一个整体之中,形成“铁板一块”的软件,“牵一发而动全身”,软件就难以适应变化。分布式对象技术将连接逻辑进行分离,消息中间件将连接逻辑进行异步处理,增加了更大的灵活性。消息代理和一些分布式对象中间件将数据转换也进行了分离。而SOA架构,通过服务的封装,实现了业务逻辑与网络连接、数据转换等进行完全的解耦。
软件技术的不断解耦的过程
软件互操作技术也存在问题。互联网前所未有的开放性意味着各节点可采用不同的中间件技术,对技术细节进行了私有化的约束,构件模型和架构没有统一标准,从而导致中间件平台自身在构件描述、发布、发现、调用、互操作协议及数据传输等方面呈现出巨大的异构性。各种不良技术约束的结果是软件系统跨互联网进行交互变得困难重重,最终导致了跨企业/部门的业务集成和重组难以灵活快速的进行。
在软件的互操作方面,传统中间件只是实现了访问互操作,即通过标准化的API实现了同类系统之间的互操作,而连接互操作还是依赖于特定的访问协议,如JAVA使用RMI,CORBA使用IIOP等。而SOA通过标准的、支持Internet、与操作系统无关的SOAP协议实现了连接互操作。而且,服务的封装是采用XML协议,具有自解析和自定义的特性,这样,基于SOA的中间件还可以实现语义互操作。
基于服务的中间件
因此,下一代的中间件将在软件的模型、结构、互操作以及开发方法等四个方面进行优化:
模型:构件模型弹性粒度化,即通过抽象层度更高的构件模型,实现具备更高结构独立性、内容自包含性和业务完整性的可复用构件,即服务。并且在细粒度服务基础上,提供了更粗粒度的服务封装方式,即业务层面的封装,形成业务组件,就可以实现从组件模型到业务模型的全生命周期企业建模的能力。
结构:结构松散化,即,将完整分离服务描述和服务功能实现以及服务的使用者和提供者,从而避免分布式应用系统构建和集成时常见的技术、组织、时间等不良约束。
互操作:交互过程标准化,即,将与互操作相关的内容进行标准化定义,如服务封装、描述、发布、发现、调用等契约,通信协议以及数据交换格式等等。最终实现访问互操作、连接互操作和语义互操作。
开发集成方法:应用系统的构建方式由代码编写转为主要通过服务间的快捷组合及编排,完成更为复杂的业务逻辑的按需提供和改善,从而大大简化和加速应用系统的搭建及重构过程。
总之,服务化体现的是中间件在完整业务复用、灵活业务组织方面的发展趋势,其核心目标是提升IT基础设施的业务敏捷性。因此,中间件将成为SOA的主要实现平台。
一体化:易于平台演化、易于开发、易于管理
一体化代表了种类繁多、功能相对单一的中间件产品趋向集成和整合,形成统一的互联网计算平台的发展趋势。
传统的中间件产品以各自问题域为核心形成了多种专门的中间件产品,如事务(交易)中间件、应用服务器、消息中间件、集成中间件等。伴随着信息技术的发展,不同种类和厂商的中间件产品同时运行在Internet之上,共同组成了大规模关键网络应用系统的基础设施。这些核心关键业务应用,涉及的功能需求广泛,功能单一的中间件产品已不足以完全满足全部需求。客户需要一种开放的集成化中间件平台,更好的适应互联网计算环境的开放、动态、多变的特性。因此,种类繁多的中间件产品不可避免的需要走向整合。
在一体化的趋势中,未来集成化的统一中间件平台所包含的各类中间件子产品共同组成了一个相互关联的有机整体,这种“集成化”,绝非简单拼凑,而是一种深度整合,具体体现在以下几个方面:
统一内核的产品体系结构,易于演化
集成化的统一中间件平台必须具备良好的可扩展性和更加有效的应用环境。而使用微内核设计是构建中间件产品可灵活插拔的统一中间件平台的重要基础。
集成统一中间件平台需要整合多种中间件产品,因此其内部功能必然庞大而复杂,为了减少复杂性和提高可扩展性,其内部结构的微内核化将是必然趋势,微内核负责协调多个中间件产品的功能,通过微内核体系可以减少平台内部接口的复杂性,实现更加健壮的结构,并提供更加稳定高效的运行期表现。使用灵活的微内核设计,新的中间件产品加入以及旧的中间件产品的废弃,都可以非常方便的进行,而无需对整个平台系统进行根本性的变动。
统一中间件微内核
微内核将提供中间件最核心的线程服务、通信服务、资源服务和事务服务,微内核的可动态组件化的中间件结构,对于中间件的整合和发展是非常重要的技术路线。
目前许多传统的传统的中间件还是基于C语言开发的中间件和Java语言的中间件在整合的阶段。部分厂商(如BEA/Oracle和金蝶APUSIC)在JAVA平台上已经实现了统一微内核的中间件产品结构体系,这将是未来中间件产品形态上的重要趋势。
统一的系统管理框架,易于管理
首先,集成化的统一中间件平台的管理必须具备全局的、系统化的。在一个大型网络应用中,往往会同时存在多种中间件以及同一中间件的多个实例,此时,平台的管理具有典型的系统化特性,那些仅针对单个中间件实例或类型的管理,其效果可能不明显甚至产生严重的负面影响。而只有全局考察系统,统筹分析和规划,才能制定出合理有效的管理方案。同时,平台的管理还必须兼顾中间件产品之间存在的开放、异构、动态等特性。开放性意味着不同业务需求导致各种各样中间件产品运行在开放的互联网之上,需要提供有效手段使得这些中间件产品被有效地管理起来,形成一个有机整体。异构性意味着不能指望平台中所有的中间件都是同类型的产品实例,需要一些方法来平滑地桥接异构性,降低异构性控制的复杂度和难度。动态性意味着平台中的中间件可以在任何时候被人为地增删,或者在任何时候由于意外原因而变得不可用,这就要求管理机制必须足够灵活以应对被管理的中间件及其实例的快速、持续的变化性。
中间件的一体化管理也是通过将管理模型服务化,通过服务封装来统一管理的对象、行为和反馈,通过服务的编排来实现管理的对象可动态进行自适应。
中间件的内部管理,也将在集成一体化的环境下,实现动态的调度,并实现对资源的虚拟化后,实现可自适应和自感知,并能够实现自我优化。
统一中间件管理模型
统一的编程模型,易于开发
众所周知,不同种类的中间件产品所提供构件模型是不同的,它们的部署机制也各有差异。这种构件模型的差异性,将会增加开发难度,提高学习与维护成本,给用户带来巨大的困扰。因此,有必要提供一种统一的编程模型来完成用户的业务逻辑,而这种统一的编程模型能够根据不同中间件种类,发布成符合该中间件要求的格式,并具备一致的部署机制;并且,这种发布与转换对用户来说应该是透明的,这将给用户带来巨大的价值。
统一中间件编程模型
目前不同类型的中间件产品一般都有各自不同的开发环境,而当今大规模网络应用大都需要多种中间件产品的共同支撑,因此,开发环境的差异性导致了用户开发、管理、监控的难度大大加深。中间件在为用户提供统一运行支撑平台的同时,也需要为用户提供统一的集成开发环境。这种集成开发环境显然不能仅仅是各类中间件开发管理工具的简单拼凑,而应该是概念统一,功能互通的有机整体。基于服务,面向SOA的中间件提供了采用服务模型来实现统一编程模型的可行性。
统一的互操作协议
现今,越来越多的企业应用呈现出互联网化。Internet正在完成从一个信息发布与访问平台到应用计算基础支撑平台的转变。传统中间件基于Intranet或私有协议的通信方式变得难以适应Internet开放、动态、易变的环境。因此,运行于互联网环境上的各种中间件产品应提供基于http协议的,安全可信的,具有自适应能力的统一互操作协议。而中间件产品本身的管理、监控等互操作API,以及部署在其上的企业应用的业务接口,则以标准服务形式基于这种统一互操作协议发布,使多个运算节点得以在互联网上形成有机整体,实现更大范围的互联互通,随需应变。
简言之,一体化代表了中间件从单一功能性产品到互联网统一平台的重要发展趋势。
虚拟化:支持云计算,易于应用交付
虚拟化是实现资源整合的一种非常重要的技术手段。早期小型机和大型机通过硬件和操作系统的分区技术(Partition)实现了资源的有效利用,优化调度和分配。通过集群技术(Cluster)实现了多台服务器虚拟为一台服务器,来实现负载的均衡和高可用性,以及解决性能的可伸缩性问题。
云计算代表网络计算价值的一个新的临界点,它提供更高的效率、更好的可扩展性和更容易的应用交付模式。云计算不仅实现硬件资源的虚拟化,还通过服务平台实现服务的虚拟化,数据的虚拟化,以及软件交付模式的虚拟化。
伴随互联网及现代服务业的发展,IT基础能力以服务的形式提供已成为一种新的趋势,SaaS、PaaS、MaaS等新业务模式不断涌现。然而,支撑这些XaaS业务模式的核心技术最终均离不开云计算。云计算平台作为一种实现计算能力动态分配的新技术平台,将构成未来数据中心大规模应用的基础,是中间件技术发展的重要趋势。
云计算需要实现软硬件资源的虚拟化管理,支持应用计算资源的动态加载和管理,提供不同应用间的实例级隔离,并且能够实现大规模应用集群及大规模事务处理。虚拟化是适用于所有云架构的一种基础性设计技术。在云计算中,它主要指平台虚拟化,或者是从使用资源的人和应用程序对物理 IT 资源的抽象作用。虚拟化允许将服务器、存储设备和其他硬件视为一个资源池,而不是离散系统,这样就可以根据需要来分配这些资源。因此,作为云计算平台的中间件,其应用的目标将是有效的统一后端的服务器的软/硬件资源。
在新一代中间件技术发展的理念中,虚拟化和服务化相结合是非常重要的特征。二者相辅相成,相互促进,结合使用,能够在组织的IT架构和业务转型的过程中发挥最大的优势。服务化关注的是业务驱动的IT基础设施的综合应用,注重业务流程的灵活性;虚拟化关注的是运行时部署的效率,注重能力提供的方便性和合理性。虚拟化有助于更快地显示部署基础设施的投资回报率(ROI)。从服务化的角度来看,虚拟化是一种把IT 资源当作服务来提供的手段。几乎所有IT资源都可以作为虚拟的云服务来提供:应用程序、计算能力、存储容量、联网、编程工具,以至于通信服务和协作工具。虚拟化的基础设施能够更有效的支持大量的现有服务和资产,从而促使组织更为深刻和广泛的进行服务化转型和改造。即,虚拟化可以提高服务部署环境的使用率,降低服务部署的总成本,继而通过关联效应,降低服务化建设的总成本。它提供更高的效率、巨大的可扩展性和更快、更容易的软件开发。
同时,虚拟化自身也会带来很多的具体的优势,通过计算资源的动态分配,能够更加有效地利用组织的软/硬件资源,优化组织的资源模型,实现灵活敏捷的资源部署,促进计算资源的整合,提高其利用率,节约空间和能源,并为灾难恢复解决方案提供新的选项。
云计算中间件
简言之,虚拟化着眼于计算资源运行时部署的效率,其有效利用和成本控制,注重资源提供的方便性和合理性,代表了今后相当长的一段时间内中间件技术发展的重要趋势。
后端平台深度融合
未来的中间件将是Internet时代网络计算的核心基础平台,它贴近并直接服务于应用系统,提供完整而强大的基础设施支撑能力,屏蔽了极端开放、动态、多变互联网环境中底层操作系统、编程语言、数据库系统、网络通信的多样性和差异性,凝练更多业务/应用模式的共性,桥接跨互联网的巨大技术异构性,真正建立起基于互联网的空前广泛的连通性,并实现基础设施提供方式的动态化、标准化、弹性化和最优化。
一个大胆的设想是未来五年,浏览器将统一前端,而后端平台(中间件、操作系统、数据库)走向深度融合。
综上所述,中间件是互联网时代的IT基础设施,提供业务的灵活性,消除信息孤岛,提高IT的研发和运营效率。作为网络计算的核心基础设施,中间件正在呈现出服务化、自治化、业务化、一体化等诸多新的发展趋势,中间件将进入2.0时代,将极大提升互联网统一计算平台的“敏、睿、融、和”能力。