中间件是伴随着网络应用的发展而逐渐成长起来的技术体系。最初的中间件发展驱动力是需要有一个公共的标准的应用开发平台来屏蔽不同操作系统之间的环境和API差异,也就是所谓操作系统与应用程序之间“中间”的这一层叫中间件。但随着网络应用的需求,解决不同系统之间的网络通信、安全、事务的性能、传输的可靠性、语义的解析、数据和应用的整合这些问题,变成中间件的更重要的驱动因素。因此,相继出现了解决网络应用的交易中间件、消息中间件、集成中间件等各种功能性的中间件技术和产品。
现在,中间件已经成为网络应用系统开发、集成、部署、运行和管理必不可少的工具。由于中间件技术涉及网络应用的各个层面,涵盖从基础通讯、数据访问到应用集成等众多的环节,因此,中间件技术呈现出多样化的发展特点。
传统中间件在支持相对封闭、静态、稳定、易控的企业网络环境中的企业计算和信息资源共享方面取得了巨大成功,但在新时期以开放、动态、多变的互联网(Internet)为代表的网络技术冲击下,还是显露出了它的固有局限性,如功能较为专一化,产品和技术之间存在着较大的异构性,跨互联网的集成和协同工作能力不足,僵化的基础设施缺乏随需应变能力等等,在互联网计算带来的巨大挑战面前显得力不从心,时代要求新的技术变革。
中间件技术的发展方向,将聚焦于消除信息孤岛,推动无边界信息流,支撑开放、动态、多变的互联网环境中的复杂应用系统,实现对分布于互联网之上的各种自治信息资源(计算资源、数据资源、服务资源、软件资源)的简单、标准、快速、灵活、可信、高效能及低成本的集成、协同和综合利用,提高组织的IT基础设施的业务敏捷性,降低总体运维成本,促进IT与业务之间的匹配。中间件技术正在呈现出业务化、服务化、一体化、虚拟化等诸多新的重要发展趋势。
1.业务化:中间件正在“变厚变宽”
中间件的本质特征是对计算环境的抽象和对应用共性的凝炼。十年来,中间件的发展多在计算环境的抽象上。目前的中间件可以在不同操作系统、不同网络环境下提供各种应用服务。
抽取分布系统构造中的共性问题,封装这些共性问题的解决机制,对外提供简单统一的接口,从而减少开发人员在解决这些共性问题时的难度和工作量。因此,其显着特点之一就是自底向上的技术导向,它典型地是对操作系统、网络、编程语言等基础软件能力的抽象和封装,其关注主要聚焦于分布式应用构建的技术细节。
越来越多的网络应用将被抽象形成标准的平台服务,加入到中间件之中,成为重要的技术特征。
业务化代表了中间件对复杂业务支持方面的发展趋势,即,从自底向上技术驱动转变为更多自顶向下的应用层的业务驱动,凝练更多的应用和业务模式,支持复杂业务的开放式多方协同和按需集成能力。
众所周知,对组织而言,通过IT对信息进行有效的管理及利用是其业务成功的关键因素,IT是要为业务服务的。中间件技术作为企业计算的核心基础设施之一,仅仅关注技术本身是不够的,尤其是在当今全球化趋势之中谋求生存和发展,IT信息系统及其基础设施对战略和业务的有效支持是至关重要的。因此,作为共性的凝练,中间件不仅要从底层的技术入手,将共性技术的特征抽象进中间层,还要更多地把目光投向到业务层面上来,根据业务的需要,驱动自身能力的不断演进,即,不断出现的新的业务需要驱动了应用模式和信息系统能力的不断演进,进而要求中间件不断地凝练更多的业务共性,提供针对性支撑机制。近年来,这一需求趋势愈发明显,越来越多的业务和应用模式被不断地抽象进入中间件的层次,如业务流程流、业务模型、业务规则、交互应用等等,其结果是中间件凝练的共性功能越来越多,形象的看,中间件的发展趋势之一就是变得越来越“厚”。
此外,在以互联网为代表的新技术推动下,伴随全球化的脚步以及国民经济和国家信息化建设的高速发展,企业/政府的业务合作和资源共享的广度、深度和频度都在不断的拓展,企业竞争本身已经从单纯的个体间行为演变为产业链层面上的激烈竞争,而电子商务的建设也呈现出从边沿向纵深的发展趋势。企业信息化在ERP打破企业内部界限,形成企业内部无边界信息流的情况下,全程电子商务将实现企业、伙伴、供应商和客户的互联互通,打破企业间的界限,形成跨行业/组织/部门之间无边界信息流,复杂业务协同往往需要将原本零散、片段的业务流程(人工/自动)和信息优化进一个集成的环境,多个业务实体在互联网提供的广泛连通性基础之上进行开放、灵活、可信的信息交换和互操作,实现企业间的业务协同,及时响应变化并有效的支持业务战略的交付,从而快速形成新的竞争力优势。因此,从支持基于互联网广泛连通性的复杂业务协同和集成的角度来看,形象地说,中间件的另一发展趋势是变得越来越“宽”。
2.服务化:中间件将面向服务,易于集成
服务化代表了中间件在提升IT基础设施的业务敏捷性方面的发展趋势,即支持对基于互联网的数据存储、软件和服务资源进行标准化的抽象和能力提供,桥接不同业务平台之间的技术异构性,并提供业务按需灵活组织的能力,让IT与业务密切匹配,提升组织的业务敏捷性。
企业最根本的痛点在于其易变的业务和僵化的IT基础设施之间的尖锐矛盾。业务的易变性是企业试图通过业务差异化而谋求利益最大化的必然结果,是激烈的市场竞争的产物。问题在于,企业常常发现:业务需要改变,但IT却不能迅速地加以响应。为什么?根本原因就在于目前最重要的软件开发技术上存在着严重问题未能解决。
解决这些问题,技术的本质是复用、松耦合、互操作(标准)等软件技术的内在机制。软件复用,即软件的重用,也叫再用,是指同一事物不作修改或稍加改动就多次重复使用。从软件复用技术的发展来看,就是不断提升抽象级别,扩大复用范围。最早的复用技术是子程序,人们发明子程序,就可以在不同系统之间进行复用了。但是,子程序是最原始的复用,因为这种复用范围是一个可执行程序内复用,静态开发期复用,如果子程序修改,意味着所有调用这个子程序的程序必须重新编译、测试和发布。
为了解决这个问题,发明了组件(或者叫控件),如MS操作系统下的DLL组件。组件将复用提升了一个层次,因为组件可以在一个系统内复用(同一种操作系统),而且是动态、运行期复用。这样组件可以单独发展,组件与组件调用者之间的耦合度降低。
为解决分布式网络计算之间的组件复用,人们发明了企业对象组件,如(Com+,.NET,EJB等),或者叫分布式组件。通过远程对象代理,来实现企业网络内复用,不同系统之间复用。
传统中间件的核心是组件对象的管理。但分布式组件也是严重依赖其受控环境,由于构件实现和运行支撑技术之间存在着较大的异构性,不同技术设计和实现的构件之间无法直接组装式复用。
而现代中间件的发展重要趋势就是以服务为核心,如WebService,SCA/SDO等。通过服务,或者服务组件来实现更高层次的复用、解耦和互操作,即SOA架构中间件。
因为服务是通过标准封装,服务组件之间的组装、编排和重组,来实现服务的复用。而且这种复用,可以在不同企业之间,全球复用,达到复用的最高级别,并且是动态可配置的复用。
SOA架构在松耦合,将中间件的解耦过程也发展到了最后的境界。传统软件将软件之中核心三部分网络连接、数据转换、业务逻辑全部耦合在一个整体之中,形成“铁板一块”的软件,“牵一发而动全身”,软件就难以适应变化。分布式对象技术将连接逻辑进行分离,消息中间件将连接逻辑进行异步处理,增加了更大的灵活性。消息代理和一些分布式对象中间件将数据转换也进行了分离。而SOA架构,通过服务的封装,实现了业务逻辑与网络连接、数据转换等进行完全的解耦。
软件互操作技术也存在问题。互联网前所未有的开放性意味着各节点可采用不同的中间件技术,对技术细节进行了私有化的约束,构件模型和架构没有统一标准,从而导致中间件平台自身在构件描述、发布、发现、调用、互操作协议及数据传输等方面呈现出巨大的异构性。各种不良技术约束的结果是软件系统跨互联网进行交互变得困难重重,最终导致了跨企业/部门的业务集成和重组难以灵活快速的进行。
在软件的互操作方面,传统中间件只是实现了访问互操作,即通过标准化的API实现了同类系统之间的互操作,而连接互操作还是依赖于特定的访问协议,如JAVA使用RMI,CORBA使用IIOP等。而SOA通过标准的、支持Internet、与操作系统无关的SOAP协议实现了连接互操作。而且,服务的封装是采用XML协议,具有自解析和自定义的特性,这样,基于SOA的中间件还可以实现语义互操作。
因此,下一代的中间件将在软件的模型、结构、互操作以及开发方法等四个方面进行优化:
模型:构件模型弹性粒度化,即通过抽象层度更高的构件模型,实现具备更高结构独立性、内容自包含性和业务完整性的可复用构件,即服务。并且在细粒度服务基础上,提供了更粗粒度的服务封装方式,即业务层面的封装,形成业务组件,就可以实现从组件模型到业务模型的全生命周期企业建模的能力。
结构:结构松散化,即,将完整分离服务描述和服务功能实现以及服务的使用者和提供者,从而避免分布式应用系统构建和集成时常见的技术、组织、时间等不良约束。
互操作:交互过程标准化,即,将与互操作相关的内容进行标准化定义,如服务封装、描述、发布、发现、调用等契约,通信协议以及数据交换格式等等。最终实现访问互操作、连接互操作和语义互操作。
开发集成方法:应用系统的构建方式由代码编写转为主要通过服务间的快捷组合及编排,完成更为复杂的业务逻辑的按需提供和改善,从而大大简化和加速应用系统的搭建及重构过程。
总之,服务化体现的是中间件在完整业务复用、灵活业务组织方面的发展趋势,其核心目标是提升IT基础设施的业务敏捷性。因此,中间件将成为SOA的主要实现平台。