2002-09-16 13:40
为Web服务打基础
随着微软公司最终发布了 Visual Studio .NET和.NET框架,众多的IT公司也纷纷开始重新构筑其产品体系以支持Web服务。虽然IBM、微软和Sun以及其他W3C的会员企业都已经着手制定了大量的技术规范来定义和设计Web服务环境(包括SOAP和XML等),不过,为了让Web服务成为跨应用间通信、基于Internet的可行平台,人们还需要做大量的工作。
出于对Web服务这一新技术体系在可靠性和安全性方面的考虑,许多公司的CIO们都还不能确定目前是否是开始部署依赖于Web服务的系统的时机。既然标准已经在开发和制定过程中,CIO们至少应在相应的问题可以得到更容易管理的情况下才能开发内部系统,与此同时他们还需要等待有关机构公开发布最终通过的技术标准。一旦技术标准被负责机构通过,在防火墙之外建立可互相操作的系统就会简单多了。
IBM和微软等公司围绕Web服务技术设计和编写了大量的技术草案并提交给W3C成为最新的Web服务提案,到目前为止,新的草案—WS-Inspection、WS-Referral、WS-Routing、WS-Security以及 WS-Licensing等都已经提交W3C讨论。下面就让我们讨论一下Web服务体系还需要完成的部分,以及这些规范是如何解决这些问题的。
直接发现服务
现有的通用描述、发现和集成(UDDI:Universal Description,
Discovery, and
Integration)标准对在Web服务地点未知情况下发现和使用Web服务进行了说明。UDDI的工作方式很像是电话薄的黄页广告目录,它可以让应用程序发现和联系提供给定Web服务的服务器。但是,在大多数情况下,Web服务的地点都是已知的,一开始就采用UDDI来查找服务地址从效率上看是比较低下的。所以说,像UDDI这种用于发现服务的中央存储库对那些想对外提供服务的服务发布者可能很有用,但对那些想连接这些服务的消费者而言,其效率却并不令人满意。
在另一方面,WS-Inspection则依靠一种完全意义上的分布模式来提供和服务有关的信息。服务描述存在于服务交付点,而获取这些信息的请求则直接导引给提供服务的站点。WS-Inspection采用XML格式,可以帮助申请Web服务的主叫(Calling)应用程序查询暴露其可用服务的已知站点。它定义了一套规则专门规定站点应该如何给提出请求的主叫方暴露其有关的检查信息。WS-Inspection文档还提供了多种方法用于汇集先前存在的服务文档的索引,而不论它们所采取的原有格式。按照该标准,查询之后返回的服务信息采用既有的标准,比如WSDL(Web服务描述语言:Web Service Description Language)等。这些标准允许主叫系统在不对信息进行任何修改的情况下就可以直接采用返回的Web服务信息。
建立可靠的系统
SOAP协议的最初实现很简单,不过就是一种一个系统对另一个系统的单向调用。WS-Referral和WS-Routing规范提供了帮助系统设计人员建立更稳固系统的核心技术。以上两种规范协同作用,共同定义了SOAP路由器这一概念,有了SOAP路由器,系统设计人员和系统开发人员就可以用其开发负载均衡、镜像和客户认证等多种Web服务。比方说,有一种Web服务可以把自己的部分处理任务转交给第3方服务,其结果可以返回给该服务的原来用户而用户却并不知道内部发生的这一切。
WS-Referral规范定义了SOAP路由器在多个服务点之间建立消息途径的方式,而WS-Routing则定义了说明消息途径的方式。WS-Routing还增加了定义反向消息途径的能力,结果促使通信系统可以启用双向消息交换模式,比如请求/响应、对等会话并且返回消息确认和错误等。这些举措大大增加了建立在SOAP平台基础之上的系统可靠性。
建立安全的系统
现有的SOAP系统采用XML文本字符串的格式传递其负载。虽然这样做可以让任意两个系统之间不论其体系结构而建立相互通信,但是这样也同时产生了严重的安全问题。现有的标准允许对处于通信管道之中的信息进行加密(采用SSL
over HTTP)或者直接对管道本身加密(采用Internet Protocol
Security或者IPSec)。但是这些方式都是要么全有要么全无的极端形式,在安全的管理上缺乏必要的调节粒度。除非会话双方都一致采取了保证消息本身安全的格式,否则不可能实施更具有粒度性的安全措施。
WS-Security联合WS-License规范一道增强了SOAP系统的粒度安全性。WS-Security定义了交换信任、检查消息完整性的能力,同时还强化了消息的机密性,两重标准既可以单独使用也可以联合使用。采用WS-Security的情况下,消息同许可权相关联(包括,但不仅仅局限于X.509证书或者Kerberos票据)。WS-License描述了同WS-Security一道采用的信任编码过程。WS-Security包括了保证消息完整性和机密性的技术规范(采用WS-License),其方式是,支持对消息的总体或者部分加密,同时提供了接收消息一方系统解码消息的措施。