每个软件销售商,标准组织,或者市场调研公司都以不同的方式定义Web 服务。例如,Hewlett Packard 公司认为Web 服务是“通过将商业应用捆绑到Web 服务接口内部而创建的模块化的可重用的软件组件。”其它的公司在IT架构中的系统,应用程序和客户之间采用了更开放的方法。
在本文中,我们将快速的察看两种Web 服务架构栈,它们是由WebServices.org和IBM 提出的,并将对与每个架构栈相关的技术做一些介绍。W3C和其它Web 开发行业领导者,比方微软,Sun,Oracle,Borland,BEA和Hewlett-Packard公司都有它们自己的架构栈,但是学习我们选择的两个标准就应该能够让我们很好的了解这些架构是如何工作的。
一个Web 服务栈的架构,包括它分层的复杂性和数目,在每个公司的定义里都是不同的。每个架构栈都需要Web 服务接口,比方通用对象请求代理架构(CORBA),Java 2 企业版(J2EE),或者.NET来使得一个Web 服务客户端程序能够与一个应用程序服务器或者中间件进行交互。要使用这个接口,你需要简单对象访问协议(SOAP),以及其它的互联网协议。
WebServices.org 的架构栈
图A 包含了WebServices.org 公司定义的Web 服务架构栈
图A
这个堆栈中的顶层是服务浏览层,它包括两个或者多个同意聚合Web 服务协议的贸易合作伙伴。这一层也叫进程定义层,包括文档,工作流程,交易和处理流程。
下面一层--工作流程,服务发现和注册层--使用了Web 服务流程语言(WSFL)和MS XLANGE,一种基于XML的语言来描述工作流程的创建和功能。有了WSFL,你可以决定Web 服务应该被当然工作流程中的一个活动还是一系列活动。WSFL 特别适合业务模型的表示,而MS XLANGE适合于Web 服务组件的长期交互过程。MS XLANG在BizTalk里被实现了,它是微软制作的XML集成服务器。
栈的第二层还定义了Web 服务与公共路径和服务的交互过程。可以被公开的Web 服务能够从公共路径或者注册表来获得身份验证过程的信息。ebXML,E-Services Village公司和BizTalk.org是另外的可以通过UDDI来与Web 服务一道使用,从而为B2B 交易过程提供服务的站点。
你需要用栈中第三层定义的Web 服务描述语言(WSDL)来描述如何连接到一个Web 服务。使用WSDL,服务的请求方可以通过UDDI查找到Web 服务的信息。Web 服务合同语言(WSCL)能够帮助开发者使用XML方案以一种更通用的格式来更好的描述和建立数据的格式。
在在这个栈的第四层,消息发送层,SOAP扮演了基于XML的消息的封装器的角色,并包含了消息封装,路由,可靠投递和安全性方面的内容。随着处理过程的进行,比方客户定单或者是从仓库中发出货物等等,消息在这个过程中被反复的进行传递。
当一系列的消息处理完成以后,这个栈就进入了第五层的处理,传输协议层,它使用HTTP,安全的HTTP(HTTPS),可靠的HTTP(HTTPR),FTP或者SMTP。然后每个Web 服务向服务请求方提供服务或者将状态报告给服务提供者或者是中间件。
最后,栈的第六层,商务处理层,列出了Web 服务使用和增长重要性的其它关键部分。
IBM 架构栈
IBM 概念的Web 服务栈是Web 服务概念架构(WSCA)1.0的一部分。它与WebService.org 公司的Web 服务架构栈有一点点不同。(见图B)。
图B
IBM Web 服务栈通过IBM MQSeries 消息系统(现在被称为WebSphere MQ)和互联网Inter-ORB 协议(IIOP)--一个CORBA用来在两个应用程序之间传输数据,信息和消息的协议,扩展了HTTP和其它传输协议。这些并没有在WebServices.org 公司的架构栈中出现。
IBM Web 服务计算架构栈的核心是WSDL,WSFL和Web 服务终端语言(WSEL)。WSFL在架构栈的第二层,也就是服务流这一层,它使用WSDL来描述服务接口并依赖WSEL来描述服务终端的不可操作特性,比方服务质量(QoS)属性。
IBM 在两个方面描述了UDDI:在使用了WSFL(静态UDDI)以后建立了服务路径以及路径项目的服务发布(动态UDDI)。与WebServices.org 架构堆栈相似的是,IBM架构栈把QoS,管理和安全应用于所有的协议层。IBM 目前提供了一个Web 服务工具包(WSTK)来帮助设计和执行Web 服务应用程序以便它们能够相互查找并在业务交互过程中协作而不需要额外的编程或者手工的参与。
结论
当然,要实现真正互连的Web 服务还需要不同架构的标准随着时间的推移变得更相似些。不管这些标准最后变成什么样子,企业和软件销售商的扩展都很可能会遵循我们这两个例子中的服务浏览,数据传输和业务逻辑最后阶段的基本结构。