2002-09-16 13:35
Web Services平台
那么什么是web service 平台呢?最基本的平台是XML加HTTP。HTTP是一个在Internet上广泛使用的协议。XML是一种元语言,你可以用它书写特定的语言来描述客户和服务之间或者组件和复杂服务之间的交互。在web server之后,XML格式的消息被转变成中间件的请求,返回的结果也会转化成XML格式。
有必要增加一些服务,同时保持简单性和普遍性,来把Web构建成一个功能更强大的平台。可以认为功能全面的web services平台是XML+HTTP+SOAP+WSDL+UDDI。在更高层次上,可能还要加上一些尚未广泛接受的技术如XAML,XLANG, XKMS,和XFS。
以下是对这些平台要素的简要描述。需要指出的是,这些还是发展中的技术,很多时候对一个问题会有多种解决方案。
◆SOAP (Simple
Object Access Protocol,远程调用)
◆UDDI (Universal Description, Discovery and
Integration Service贸易,目录服务)
◆WSDL (描述服务特征)
◆XLANG/XAML (为包括多种web
services的复杂web事务提供支持)
◆XKMS (XML Key Management Specification) -
支持认证和注册,这个工作还在进展之中
SOAP
SOAP是用在分散或分布的环境中交换信息的简单的协议,它是一个基于XML的协议,定义了传递XML-encoded数据时的统一方式。包括三个部分:封装定义了一个描述消息中包含什么内容以及如何处理它们的框架,编码规则用于表示应用程序定义的数据类型的实例,另外还有一个表示远程过程调用和应答的协定。SOAP被设计为可以与各种其它协议结合使用。
SOAP的兴起是基于这样一种认识,无论现在的中间件是如何的好,他们都需要一个WAN包装。以XML格式发送消息有很多好处,如能够确保互用性。中间件使用者看来愿意容忍解析和序列化XML文档的代价,因为这可以让他们的软件使用范围更宽。
IBM, Microsoft, UserLand,和DevelopMentor在2000年向W3C提交了SOAP,并成为W3C的Note,SOAP更长远的发展规划现在是由W3C的XML协议工作组来制定。这有力的表明了直到W3C工作组交付规范为止,SOAP都将是一个稳定的规范。
UDDI (Universal Description, Discovery and Integration Service)
UDDI为客户提供了动态查找其它Web
Services的机制。使用UDDI接口,商务处理可以动态的连接到外部的商务合作者提供的服务上。一个UDDI注册类似于CORBA的trader,也可以把它想象成商业应用程序的DNS服务。一个UDDI注册有两种客户:要发布一个服务(和使用接口)的商务应用,以及想要得到特定服务的客户。UDDI层在SOAP层之上,并假定请求和应答都是以SOAP消息传送的UDDI对象。
WSDL :Web服务定义语言
Web服务描述语言(WSDL)是一种XML语法,为服务提供者提供了描述构建在不同协议或编码方式之上的Web
Service请求基本格式的方法。WSDL用来描述一个Web Service能做什么,它的位置在哪里,如何调用它等等。在假定以SOAP/HTTP/MIME
作为远程对象调用机制的情况下,WSDL会发挥最大作用。UDDI注册描述了Web
Service的绝大多数方面,包括服务的绑定细节。WSDL可以看作是UDDI服务描述的子集。
WSDL将服务定义为一个网络端点的集合,或者说端口的集合。在WSDL里面,端点及消息的抽象定义与它们具体的网络实现和数据格式绑定是分离的。这样就可以重用这些抽象定义:消息,需要交换的数据的抽象描述;端口类型,操作的抽象集合。针对一个特定端口类型的具体协议和数据格式规范构成一个可重用的绑定。一个端口定义成网络地址和可重用的绑定的联接,端口的集合定义为服务。因此一个WSDL文档在定义网络服务的时候使用如下的元素:
类型-- 使用某种的类型系统(比如XSD)定义数据类型的容器
消息-- 通讯数据抽象的有类型的定义
操作--
服务支持的动作的抽象描述
端口类型-- 一个操作的抽象集合,该操作由一个或多个端点支持
绑定--
针对一个特定端口类型的具体的协议规范和数据格式规范
端口-- 一个单一的端点,定义成一个绑定和一个网络地址的联接
服务--
相关的端点的集合
所以,可以这样说,WSDL给客户提供了一个模板,方便他们描述和绑定服务。
XLANG
数据库中的事务的传统概念是原子性,即要么不做,要么全做。在分布式的系统中维持这种原子性,一般采用一种代价昂贵的处理方式,即两相承诺。另一个相对优化的模型也在研究之中(最初叫做sagas,由Hector
Garcia-Molina提出),即每个动作都有一个明确的互补动作,用以取消该动作产生的结果。在现实生活中,这种互补动作的例子很多,比如说,你在信用卡里取出$52,互补动作就是存入$52,你发出一封Email说“你将会在7天内拿到你预定的产品”,互补动作就是发Email说“哦,你还得多等几天”。XLang就是基于这样一个概念,用来表示任何要取消的请求的互补动作。而Web
Service的分布式基础将推动XLang规范的发展,使之能完成复杂的撤销操作。
XKMS (XML Key Management Specification)
XKMS是Microsoft和Verisign用XML应用程序集成PKI和数字认证(用于Internet事务安全性)的成果。关键的思想是将签名处理放到Web上的可信服务器(trust
server)上,这样小客户就不必自己来做这些内容。XKMS依赖于XML数字签名规范和正在制定中的XML加密规范。现在的XKMS规范依赖于XML,SOAP,WSDL。