(以下摘自http://www.huihoo.com/application_infrastructure/middleware_ws/)
作者:Allen (allen@huihoo.com)
日期:2003.09
灰狐动力:企业计算研究中心
http://www.huihoo.com
中间件作为一大类系统软件,与操作系统,数据库管理系统并称"三套车",其重要性是不言而语的.
那什么是中间件?
我们来看看以下的几种定义:
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
400){this.resized=true;this.style.width=400;}">400){this.resized=true;this.style.width=400;}" resized="true">
当然,在这个大的层次划分下,中间件还可以细化为以下一些种类:
。分布式对象中间件: 如Orbix,TAO
。J2EE应用服务器: 如WebLogic,Jboss
。消息中间件: 如MQSeries,JMS
。事务(交易)中间件: 如Tuxedo, TXSeries(CICS)
。应用集成中间件: 如BEA WebLogic Integration
。数据库中间件: 如JDBC
。安全中间件: 如东方通的TongSec
。无线移动中间件
。CTI(呼叫中心)中间件
。。。
二、中间件应用层次
400){this.resized=true;this.style.width=400;}" resized="true">
中间件技术应用层次图
中间件提供了应用系统基本的运行/执行环境,而中间件服务则提供了更多高级的功能,如名字服务,事件服务,通告服务,日志等服务,在这些服务之上,我们还需要考虑不同行业的需求.不同的应用领域.
三、中间件技术在集成中的应用
中间件技术在集成中扮演着重要的角色,我们可以从不同层次采用不同种类,不同技术的中间件产品进行应用集成
我们可以从传输,消息,组件,流程等各个层面分别加以集成.
400){this.resized=true;this.style.width=400;}" resized="true">
从图中,我们可以看出,为了完成不同层次的集成,我们可以采用不同的技术和不同产品。
如:
。为了完成系统底层传输层的集成,我们可以采用CORBA技术,
。为了完成不同系统的信息传递,我们可以采用消息中间件产品
以下是一个商业流程处理的例子:
400){this.resized=true;this.style.width=400;}" resized="true">
TIBCO BusinessWorks Designer用户界面
这样,我们面对复杂的集成问题,就有了一个大致的应对措施和解决方案。
同样,目前中间件的竞争焦点也主要集中在集成应用平台上。以TIBCO为市场领导者的EAI市场遭到了来自传统中间件厂商BEA等公司的激烈挑战。大多中间件公司都已经或准备将下一步的工作重点放在了集成市场上。国内中间件公司东方通公司也在努力杀入这个市场。
而在集成市场上,Web Services表现出极强的发展势头.
接着,我们了解一些有关Web Services的知识。
四、从中间件到Web Services
从中间件发展到目前的Web Services是一种基于Internet的发展需求。
我们可以将Web Services简单理解为对已有中间件技术的更高层次的封装。
其业务逻辑和方法的实现还得依赖于底层的CORBA,J2EE等技术。
我们先看看中间件的发展历程。
400){this.resized=true;this.style.width=400;}" resized="true">
这是中间件一条大致发展路线图:
CORBA400){this.resized=true;this.style.width=400;}">MOM/EAI400){this.resized=true;this.style.width=400;}">J2EE应用服务器400){this.resized=true;this.style.width=400;}">应用集成平台(基于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行业的最亮点.
400){this.resized=true;this.style.width=400;}" resized="true">
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
400){this.resized=true;this.style.width=400;}" resized="true">
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做为软件的一个发展趋势,我们不能忽视,更不能放弃这个机会。
期待与大家更多的交流与协作.
参考资料:
。C++ Network Programming Mastering Complexity with ACE & Patterns
。Dr Andy Bond的Middleware and Enterprise Architectures
。SUN公司Sun ONE Application Server 7 Web Services 开发者指南
http://www.huihoo.com/one_and_net/app7/index.htm
。http://www.tibco.com
关于作者:
Allen,研究方向:J2EE、CORBA、WebServices、WorkFlow、EAI等方面,愿意与更多的朋友一起来打造中国人自己的中间件基础平台。
http://www.huihoo.com 中间件技术论坛
http://www.huihoo.org 开源中间件项目
个人主页 http://www.huihoo.org/~allen/