中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
IDC对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
中科院软件所研究员仲萃豪形象地把中间件定义为:平台+通信。这个定义限定了只有用于分布式系统中的此类软件才能被称为 中间件,同时此定义还可以把中间件与支撑软件和实用软件区分开来。
目前,中间件发展很快,已经与操作系统、数据库并列为三大基础软件。中间件主要分为以下几类:
1.通信处理(消息)中间件
此类中间件能在不同平台之间通信,实现分布式系统中可靠的、高效的、实时的跨平台数据传输(如Tong LINK、BEAe Link、IBM的MQ Series等)。这是中间件中唯一不可缺少的,是销售额最大的中间件产品。
2.交易中间件
在分布式事务处理系统中要处理大量事务,常常在系统中要同时做上万笔事务。例如在北京市就要设置各种运载汽车,完成日常的运载,同时要随时监视汽车运 行,出现故障时,要有排除措施,发生堵塞时要进行调度。在联机事务处理系统(OLTP)中,每笔事务常常要多台服务器上的程序顺序地协调完成,一旦中间发 生某种故障时,不但要完成恢复工作,而且要自动切换系统,达到系统永不停机,实现高可靠性运行;同时要使大量事务在多台应用服务器能实时并发运行,并进行 负载平衡地调度,实现昂贵的可靠性机和大型计算机系统同等的功能,为了实现这个目标,要求系统具有监视和调度整个系统的功能。BEA的Tuxedo由此而 著名,它成为增长率最高的厂商。一个事务处理平台,根据X/OPEN的参数模型规定,应由事务处理中间件、通信处理中间件以及数据存取管理中间件三部分组 成。东方通科技公司的Tong LINK和TongEASY实现了这个参考模型规定。
3.数据存取管理中间件
在分布式系统中,重要的数据都集中存放在数据服务器中,它们可以是关系型的、复合文档型、具有各种存放格式的多媒体型,或者是经过加密或压缩存放的,该中间件将为在网络上虚拟缓冲存取、格式转换、解压等带来方便。
中间件简史
最早具有中间件技术思想及功能的软件是IBM的CICS,但由于CICS不是分布式环境的产物,因此人们一般把Tuxedo作为第一个严格意义上的中间件产品。Tuxedo是1984年在当时属于AT&&T的贝尔实验室开发完成的,但由于分布式处理当时并没有在商业应用上获得像今天一样的成功,Tuxedo在很长一段时期里只是实验室产品,后来被Novell收购,在经过Novell并不成功的商业推广之后,1995年被现在的BEA公司收购。
尽管中间件的概念很早就已经产生,但中间件技术的广泛运用却是在最近10年之中。BEA公司1995年成立后收购Tuxedo才成为一个真正的中间件厂商,IBM的中间件MQSeries也是90年代的产品,其它许多中间件产品也都是最近几年才成熟起来。国内在中间件领域的起步阶段正是整个世界范围内中间件的初创时期。东方通科技早在1992年就开始中间件的研究与开发,1993年推出第一个产品TongLINK/Q。而中科院软件所、国防科技大学等研究机构也对中间件技术进行了同步研究。可以说,在中间件领域,国内的起步时间并不比国外晚多少。
在j2ee中就是tomcat 和 weblogic 等服务器软件
计算机技术迅速发展。从硬件技术看,CPU速度越来越高,处理能力越来越强;从软件技术看,应用程序的规模不断扩大,特别是Internet及WWW的出现,使计算机的应用范围更为广阔,许多应用程序需在网络环境的异构平台上运行。这一切都对新一代的软件开发提出了新的需求。在这种分布异构环境中,通常存在多种硬件系统平台(如PC,工作站,小型机等),在这些硬件平台上又存在各种各样的系统软件(如不同的操作系统、数据库、语言编译器等),以及多种风格各异的用户界面,这些硬件系统平台还可能采用不同的网络协议和网络体系结构连接。如何把这些系统集成起来并开发新的应用是一个非常现实而困难的问题。
************************************************************************************
中间件作为一大类系统软件,与操作系统,数据库管理系统并称"三套车",其重要性是不言而语的.
那什么是中间件?
我们来看看以下的几种定义:
http://middleware.internet2.edu/ 给出了middleware的一个定义:
Middleware, is a layer of software between the network and the applications. This software provides services such as identification, authentication, authorization, directories, and security. In today's Internet, applications usually have to provide these services themselves, which leads to competing and incompatible standards. By promoting standardization and interoperability, middleware will make advanced network applications much easier to use.
同样,IDC给出的一个定义:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
从这些定义中可以看出:
– 中间件是一类软件,而非一种软件;
– 中间件不仅仅实现互连,还要实现应用之间的互操作;
– 中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
接着,我们再来看看什么是Web Services?
Web Services就是可以通过web描述、发布、定位和调用的模块化应用。Web Services可以执行任何功能,从简单的请求到复杂的业务过程。一旦Web Services被部署,其他的应用程序或是Web Services就能够发现并且调用这个部署的服务。
Web Services通过简单对象访问协议 (Simple Object Access Protocol,SOAP)来调用。SOAP是一种轻量级的消息协议,它允许用任何语言编写的任何类型的对象在任何平台之上相互通信。SOAP消息采用可扩展标记语言(XML)进行编码,一般通过HTTP进行传输。与其它的分布式计算技术不同,Web Services是松耦合的,而且能够动态地定位其他在internet上提供服务的组件,并且与它们交互。
Web Services使用诸如SOAP消息这样的XML消息,通过一种良好定义的消息交换模式来调用。通过描述调用服务所必需的数据,Web Services描述语言 (WSDL)文档定义了消息交换模式。
一、中间件分类
中间件分类有很多方式和很多种类,在这里我们由底向上从中间件的层次上来划分,可分为以下三个大的层次:
。集成型中间件
在通用型中间件产品之上整合了Application,Portal,Business Process等技术
主流技术:WorkFlow,EAI
代表产品: BEA WebLogic Integration
。通用型中间件
主流技术:CORBA,J2EE,MOM
代表产品:IONA Orbix,BEA WebLogic,IBM MQSeries
。基础型中间件
主流技术: JVM,CLR, ACE
代表产品:SUN JVM, Microsoft CLR
当然,在这个大的层次划分下,中间件还可以细化为以下一些种类:
。分布式对象中间件: 如Orbix,TAO
。J2EE应用服务器: 如WebLogic,Jboss
。消息中间件: 如MQSeries,JMS
。事务(交易)中间件: 如Tuxedo, TXSeries(CICS)
。应用集成中间件: 如BEA WebLogic Integration
。数据库中间件: 如JDBC
。安全中间件: 如东方通的TongSec
。无线移动中间件
。CTI(呼叫中心)中间件
。。。
二、中间件应用层次
中间件技术应用层次图
中间件提供了应用系统基本的运行/执行环境,而中间件服务则提供了更多高级的功能,如名字服务,事件服务,通告服务,日志等服务,在这些服务之上,我们还需要考虑不同行业的需求.不同的应用领域.
三、中间件技术在集成中的应用
中间件技术在集成中扮演着重要的角色,我们可以从不同层次采用不同种类,不同技术的中间件产品进行应用集成
我们可以从传输,消息,组件,流程等各个层面分别加以集成.
从图中,我们可以看出,为了完成不同层次的集成,我们可以采用不同的技术和不同产品。
如:
。为了完成系统底层传输层的集成,我们可以采用CORBA技术,
。为了完成不同系统的信息传递,我们可以采用消息中间件产品
以下是一个商业流程处理的例子:
TIBCO BusinessWorks Designer用户界面
这样,我们面对复杂的集成问题,就有了一个大致的应对措施和解决方案。
同样,目前中间件的竞争焦点也主要集中在集成应用平台上。以TIBCO为市场领导者的EAI市场遭到了来自传统中间件厂商BEA等公司的激烈挑战。大多中间件公司都已经或准备将下一步的工作重点放在了集成市场上。国内中间件公司东方通公司也在努力杀入这个市场。
而在集成市场上,Web Services表现出极强的发展势头.
接着,我们了解一些有关Web Services的知识
四、从中间件到Web Services
从中间件发展到目前的Web Services是一种基于Internet的发展需求。
我们可以将Web Services简单理解为对已有中间件技术的更高层次的封装。
其业务逻辑和方法的实现还得依赖于底层的CORBA,J2EE等技术。
我们先看看中间件的发展历程。
这是中间件一条大致发展路线图:
CORBAMOM/EAIJ2EE应用服务器应用集成平台(基于Web Services等技术)
从图中我们可以看见当前这个时期,中间件的竞争焦点将放在Web Services上
比尔·盖茨也曾经说过:"世界上所有一切都将包括在互联网服务中"
未来一切都将通过互联网实现,那些为互联网服务提供基础架构的企业,将成为今后高科技行业真正的霸主。目前的成员有:IBM、微软、Oracle、SAP
其激烈竞争的焦点将是: 基于Internet的软件平台和集成应用平台
是什么原因促使了这一格局的产生。我们来看看其中的一些原因:
软件业、软件服务业正发生着巨大的变革:
通过Internet完成软件,服务,客户,供应商,商业流程的互操作,交换和协作将成为一种发展趋势,主要体现在以下几个方面:
。软件模式的变化:软件即服务(Software as Service) 、应用软件、套装软件将以一种服务的形式向用户提供。而被封装成Web Services已成为一种趋势。
。Web技术,Internet的快速发展,要求软件和服务能够通过Internet取得和访问到.而Web Services标准、技术和应用的迅速发展也加快了这一进程的发展。
。CORBA、J2EE、NETD等复杂的分布式技术需要通过Web Services更方便,简单得提供给用户。使复杂,专用的技术变得简单,通用。
Gartner Group对Web Services的发展也做出了一份研究报告。Y轴表明技术的受关注程度,而X轴则表示技术的应用的成熟度。
从图中可看到,Web Services已是目前整个IT行业的最亮点.
Web Services构建在一系列核心的标准协议之上,包含:
。SOAP
http://www.w3.org/TR/soap 。WSDL
http://www.w3.org/TR/wsdl
。UDDI
http://www.uddi.org
。ebXML
http://www.ebxml.org
JAVA由于其跨平台,面向对象,便于Internet应用开发等特性使它成为开发Web Services的首选语言。
我们可以使用Java API实现Web Services
SOAP消息传输是针对Web服务的协议。JAXP API允许你访问并解析XML数据。JAXP的主要目标是提供一个接口,允许你不必参考底层实现,就能创建、操纵、和使用XML解析器,允许你创建解析器无关的代码,并且把解析器的选择推迟到运行时。
JAX-RPC帮助你创建基于XML的请求,比如SOAP请求,它被用来发送和接收基于XML的协议的方法调用。JAX-RPC API提供了高层的框架来把Java功能暴露为Web服务,这些服务能够被SOAP客户端消费,或者作为消费SOAP服务和客户端的方式。在典型的JAX-RPC使用案例中,开发人员没必要进行XML和SOAP编程,这样就能够快速开发应用。这不仅完成了XML和Java的互相映射,而且避免了直接与调用的XML表示进行交互。
JAXM提供了使这样的XML数据能够在两个应用之间互操作的框架。就是说,JAXM允许在两个独立的Web服务之间完成全部XML文件的传输。SOAP提供了在两个应用之间传输的消息的底层格式。JAXM作为轻量级的API,抽象了底层的消息基础结构。因此,开发
利用SOAP包装的JAXM消息是容易的,SOAP使你能够快速而且容易地访问SOAP消息。
SAAJ API使你能够操纵简单SOAP消息。它可以与JAX-RPC结合使用,JAX-RPC是用来接收和发送SOAP消息的J2EE标准API,用来表示字面上的XML文件片断。SAAJ是JAX-RPC的主要部分,但你也可以把它和其他API,比如JAXM,一起使用。
JAXM和JAX-RPC之间的区别在于,JAXM支持面向消息的中间件类型的应用开发,它允许你专注于消息的发送和接收。但是,JAX-RPC支持应用的RPC行为。如同SOAP 中定义的一样,JAX-RPC为XML RPC调用提供了Java接口。
以下是需要我们密切关注的产品和技术趋势:
。移动计算中间件
。反射中间件
。自治中间件
。Qos中间件
。网格计算中间件
。CORBA3
。J2EE
。NET
。。。
中间件,Web Services做为软件的一个发展趋势,我们不能忽视,更不能放弃这个机会。
微服务架构的中间件技术 微服务与中间件
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章