2002-08-26 10:41
Web服务准备:理解和使用Web服务托管技术
Mike Polan(polan@ca.ibm.com)
WebSphere 托管体系架构设计师,IBM
Electronic Commerce 部门
2002 年 1 月
准备 Web 服务是在企业间实施按使用付费的 Web 服务的关键所在。无论是在您公司内部还是在业务合作伙伴之间,在使用期间控制
Web 服务的行为的是服务认证、登记、评测、计费以及管理操作的复杂混合体。这篇论文研究了“Web 服务托管技术”(Web Services Hosting
Technology,WHST)包,该包通过 alphaWorks
发布,用来处理这项主要任务。
介绍
Web
服务体系架构利用因特网普遍深入的特性简化了分布式应用的创建。现在,企业组织可以有廉价、开放的渠道通到他们的客户和合作伙伴。这使企业实体间能够创建和集成自动化过程,也能够创建托管的服务(可作为分布式业务流程的部分环节)。
例如,一个企业可能要实现一个采购系统。除跟踪定单和管理内部审核所需的工作流程之外,通过外部的供应商,该系统还可以自动地发现服务、招标以及下定单。它可以发现服务、为定单安排筹集资金和装运工作以及跟踪定单情况。通过利用 Web 服务,采购系统仍然在管理这个流程的企业组织的控制范围内,还可以将完成此流程所需的服务委托给外部的企业组织。
虽然实现这个目标还有大量工作要做,但 Web 服务托管这种基础架构已日见端倪。因特网提供了连通性;Web 服务体系架构提供了交换数据的机制。标准组织将继续改进服务接口规范,从而进一步减少集成要做的工作。
服务提供者或发布供内部或外部使用的 Web 服务的企业需要具备管理功能,从而准备和控制这些服务。Dan Gisolfi 在其 Web 服务体系架构专栏(请参阅参考资料)中描述了这些要求,这些要求是虚构的“Trumpet”公司的 IT 部门所确定的。一个 alphaWorks 包,“Web 服务托管技术”(WSHT V1.0)说明了如何能部分地满足 Trumpet 的 IT 部门所涉及的要求。这篇论文讨论了在那种环境中使用 WSHT,以及其余的要求如何在将来得到满足。
托管方案
Web 服务准备是以 WSHT 为中心的,主要领域有下面这些:
允许将 Web 服务发布到由预订系统引用的目录的工具。
Web
服务预订和准备系统。
与合同(和预订相关联)有关的 Web
服务的评测和计费。
用于预订、准备、评测和计费组件的管理系统。
我们将从研究以下两个主要的方案开始讨论:
构建且运行于公司内部网中本地应用服务器上的 Web 服务的托管。
构建且运行于公司内部网之外的应用服务器上的
Web 服务的托管。
这两种情况的区别是第一个是简单的托管方案,而第二个可以被描述为代理或批发方案。要获取关于这种区别的更进一步的信息,您应该阅读“Applying Web services to the application service provider environment”(请参阅参考资料)。
这两种方案的目标都是允许以一种将服务本身的问题域从预订、准备和管理系统的问题域分离出来的方式管理 Web 服务;在许多情况下,当编写服务时,服务的设计者将不需要考虑准备系统的需要。
开发和部署方面将包括以下几个步骤:
开发者使用 Web 服务工具箱和单元测试环境来创建和测试 Web
服务。
开发者提供准备挂钩(hook),从而允许准备系统有计划地登记服务的新用户(如果需要)。
服务提供者为定价和计费引擎创建定价包(使用由这些应用提供的工具)。
将
Web 服务部署到服务提供者的生产服务器。
将 Web 服务定义(WSDL)部署到 UDDI 或其它一些 WSDL
注册中心。
服务提供者创建报价(一个报价包含一个或多个 WSDL
注册中心列出的与定价包相关联的服务)。
服务提供者将报价部署到在线目录,该在线目录引用服务目录和定价包。
登记和预订方面:
潜在的订户(消费者)通过引用目录的注册中心发现 Web
服务,反之亦然。
如果还不是成员,新的订户向服务提供者登记(建立一个帐户)。
订户选择预订新的 Web
服务。
自动为新订户准备服务。
订户下载使用 Web 服务所必需的资产,编写并部署一个客户应用程序。
使用方面:
客户应用程序使用 Web 服务,由 Web
服务准备基础架构对这种使用进行评测并给出报告。
使用事件被传给定价引擎,为计费系统生成发票行。
服务提供者和订户都通过访问计费系统获知当前的使用费用。
服务提供者使用管理
UI 来控制对 Web 服务的访问。
以上每一个方面都在一定程度上与准备系统有关。开发和部署方面需要构建一个到准备系统的接口;登记和预订构建准备系统;使用方面利用准备系统。因此,登记和准备系统及其支持系统是成功地托管企业级 Web 服务的关键。
“Web 服务托管”要求
为了支持在企业级托管 Web
服务,您将需要许多重要的组件。这一节以“Metering and accounting for Web services”(请参阅参考资料)中介绍的为托管
Web 服务而确定的要求为基础。
服务的目录
为了管理托管的 Web
服务,服务可能需要与一个报价或一次交易相关联。报价将 Web
服务与用来确定使用费用(计费)的恰当的定价包联系起来。报价及其相关联的服务被发布到目录,之后便可供消费者发现和预订。
定价包是将预订和使用评测事件与费用关联起来的一组规则。定价引擎根据确定的定价包对这些事件进行评估,将发票行提供给计费系统。计费系统将发票行与相应的帐户关联起来,也与其它许多功能(比如:跟踪发票和收款)关联起来。
一旦定义好了,发布步骤就使消费者可以使用 Web 服务消费所必需的资产。与服务相关联的报价信息被发布到目录服务,并由预订服务引用。
登记和预订
登记是使托管系统知道订户标识的过程。在随后将 Web
服务的使用与该服务的消费者相关联时需要这个标识。通常将登记和预订步骤结合在一起。
预订是将用户添加到给定的 Web 服务消费者列表的行为。消费者通过选择报价来选定所希望的服务,报价包含所希望的服务并确定合同中的使用条款。预订可能需要付安装费。一旦预订了,消费者可以使用服务操作(消费)所必需的任何资产。
准备
准备是为消费者使用服务准备系统的行为。它包括为支持消费者活动在技术和业务两方面作准备。
Web
服务准备
服务可以是匿名的或有准备的。匿名服务在运行时不需要消费者的标识就可以进行操作。匿名服务的一个例子是检索股票价格。Web
服务的认证、授权和评测被委托给托管系统,因此,匿名服务通常不需要其它的准备。
有准备的服务是需要将用户帐户和/或其它信息与服务关联起来的服务。例如,当必须确定要检索的帐户余额时,从用户资产清单检索帐户余额就是有准备的服务。对与该服务相关联的资产的细粒度保护还需要其它访问控制。
要使登记和预订过程自动化,每个有准备的服务都需要一些扩展。这些通常是构建在服务中的 API,只需要通过服务代理映射为准备系统功能。接下来,准备系统在预订时将通过代理驱动这些功能。
支持系统
当托管 Web
服务时,任何分布式系统设计中提供的许多系统同样有用,并且必须是有准备的,如表 1 所示。
表 1. 准备支持系统
系统 | 描述 |
成员 | 允许服务间共享用户简档信息的公共资源库。在登记步骤中,数据被植入成员资源库。理想情况下,简档管理是自助式的,管理功能像作为报价一部分的其它服务一样被准备。 |
认证 | 认证在运行时建立服务调用者的标识。认证系统通常在登记期间被准备。 |
授权 | 该系统存储并报告策略和许可权,从而确定让授权的用户访问服务,并且阻止未授权的用户访问组件或服务。授权系统将在预订时被准备,并且在服务运行时被查阅。 |
许可证管理 | 该系统协助服务提供者确保对服务的访问完全在该服务许可证协议条款的控制下。许可证协议可能是服务提供者和最终用户之间的协议,或者是服务提供者和服务供应商之间的协议。许可证管理系统将在安装服务时被准备,并且在服务运行时被查阅。 |
定价系统 | 当评测事件出现时,定价系统用来确定适用于这些事件的费用。定价系统由定价引擎以及为每一个消费者协议准备的定价包(可以共享定价包)组成。定价包将在服务预订时被创建(或被引用)。虽然一些实现可能需要在服务运行时进行处理,但是定价引擎通常会在服务执行之后处理评测事件(确定费用)。 |
合同
合同可以用来存有这样一种信息,这种信息将 Web
服务的消费者与该服务、服务的条款(包括定价包)以及计费帐户联系起来。认证和标识系统与所调用的服务一起提供上下文,当调用服务时,该上下文用来发现恰当的合同。通过“服务级协议”(Service
Level Agreement,SLA)和“服务质量”(Quality of
Service,QoS)管理系统,合同上下文用来对信息进行评测。在预订的基础上,托管系统创建消费者、服务、SLA、QoS 和计费帐户,并将它们关联起来。
在托管的环境中,如果不存在使用这些服务的有效合同,则试图调用托管的 Web 服务将被拒绝。
评测、定价和计费
用于准备的帐户管理过程分为:评测、日志记录、定价和计费这样几个子过程。
评测
如果您需要基于使用的计费,则消费者对 Web
服务的使用必须被评测。系统还收集登记、预订和准备事件,可以使用这些信息来确定预订费用。
使用评测通过 Web 服务运行时的装备来完成,无需给服务本身强加额外设计要求。Web 服务的设计者可以进一步装备服务,以提供其它评测事件。
日志记录
评测事件被写到公共日志中,稍后由定价引擎进行处理。评测和评测事件日志记录都会在 Web
服务的服务器和客户端出现,允许稍后进行核对。
定价
使用所指定的定价包,定价引擎将评测事件转换为传给计费系统的发票项。定价引擎根据使用和预订的情况确定费用(基于时间)。通常定价引擎是较大的计费系统的一部分。
计费
计费系统接受来自定价引擎的发票信息,并将它与正确的用户帐户关联起来。计费系统提供一些信息,从而允许消费者检索计费信息并根据计费信息进行支付、在发生争议的情况下进行核对以及更正支付给提供者的供应商(供应商反过来也可能向原提供者提供批发服务)的付款。
Web 服务托管的运行时
运行时,各种支持系统将再次发挥作用,如表 2
所示。
表 2:在运行时的托管支持系统
系统 | 运行时过程 |
成员 | 服务可能需要从这个公共资源库检索成员信息。 |
认证 | 建立并验证服务调用者的标识。 |
授权 | 确保用户只能访问那些他们有权访问的服务。 |
评测 | Web 服务基础架构将把使用事件记录到日志记录系统。 |
日志记录 | 公共的日志记录系统将捕获审计和评测记录,以便稍后进行处理。 |
许可证管理 | 确保系统和服务的组件以一种遵循适用的任何许可证协议的条款的方式被使用。 |
当调用了服务,Web 服务基础架构将试图发现合同,使之应用于该调用。合同将包含对信息(服务将根据此信息被处理)的引用。最低限度,合同的存在将起到授权核查的作用;如果没有有效的合同,将不能调用服务。当对由该调用生成的评测事件进行处理时,合同还可以确定将会用到的定价包;当调度服务时,合同可以确定要用到的 QoS 和 SLA 参数。
管理
自助式简档管理功能的使用将可以降低服务提供者的操作成本,将赋予消费者管理其组织和个人数据的权利。
认证和授权系统的管理功能通常由这些系统本身提供。
目录发布工具将用来管理目录中的服务和报价信息,而托管系统将提供合同和预订管理。
计费系统通常提供定制的管理功能。计费系统还可以提供订户接口组件,这些组件将被集成到最终用户门户网站中。
Web 服务托管技术
“Web 服务托管技术”(WHST)是发布在
alphaWorks 上的新包,它实现了准备的所有主要功能。以下的内容是 WSHT 及其工作原理的概述。
组件和功能
WSHT
的主要组件有门户网站,报价目录,登记和预订系统,运行时扩展以及定价、计费和帐户管理系统。
WHST 门户网站
WSHT 包满足了托管 Web
服务的许多要求。其目的并不是生产服务,因此为了方便,将登记、预订和管理功能组合到一个门户网站。门户网站提供了对以下内容的访问:
目录构建和管理功能。
用户和预订管理。
计费帐户状况。
登记功能。
预订功能。
权利列表。
Web
服务测试接口。
报价创建和报价目录
WHST
提供了创建和管理称为报价的预订元素的工具。报价将来自 UDDI 注册中心的一个或多个 Web 服务与用来计费的定价包相关联。
报价放在一个简单的目录里提供给已登记用户,作为登记和预订操作的一部分。
登记和预订
简单的登记系统在
WSTK“标识”服务的基础上被提供。要登记,用户只需要选择一个独一无二的用户标识并提供一个密码。
预订接口允许已登记用户从可用的报价列表中进行选择。接受了报价中的条款就会创建服务调用时所用到的合同。
运行时扩展
基本的 Web 服务运行时在 WHST
环境中被扩展。运行时被装备为记录审计和评测记录。基本的 WSTK 标识服务用来进行授权(如果用户存在且与密码匹配,他们将被授权使用系统)。WSTK
合同服务用来确定服务的用户是否拥有一个有效的合同,之后合同标识符将在评测记录中被引用。
定价、计费和帐户管理
轻量的定价引擎周期性地处理审计和评测日志中的评测记录,将发票记录传给轻量的计费系统。计费系统将发票记录与订户帐户关联起来。将提供一个用户界面,允许用户查看汇总的订户帐单。
操作 WSHT
操作 WSHT
是一个分为两步的过程:第一步,用准备系统建立服务;第二步,将服务消费者客户绑定到准备系统。
WSHT 发布、登记和预订
图 1 展示了服务开发者怎样将服务定义发布到
UDDI
注册中心。服务提供者将服务与定价包相匹配作为报价,并创建一个目录条目。消费者向服务提供者登记,从目录选出所希望的服务,并且预订服务。客户资产被消费者下载,并在调用服务的客户应用程序的开发中使用。
图 1. 用准备系统建立服务。
WHST 运行时
在运行时(请参阅图
2),客户应用程序绑定到服务,并使用恰当的机制调用服务,该机制报告在登记阶段建立的标识(请参阅图 1)。Web
服务的服务器调用标识处理程序来验证消费者标识,然后调用合同处理程序来验证合同是否存在。接下来调用评测处理程序来记录服务调用的启动,之后,记录它的结束。定价引擎处理事件日志中的事件,确定费用并且在计费系统中创建发票项。消费者使用服务门户网站来查看使用费用。
图 2. 运行时客户应用程序绑定和服务交互
WSHT 配置
为了支持 Web 服务协议的不同实现,WSHT
有两种配置:简式和网关。
简式
为了建立服务用户的标识,简式配置假设使用 Apache SOAP
3.0(Axis)协议实现中的处理程序系统。服务客户将用户标识和密码插入到请求中。Web 服务工具箱(Web Services ToolKit)3.0
服务器(请参阅参考资料)检索标识,并用它来发现适用的合同,服务将按照这个合同被调用。
网关
“Web 服务网关”(Web Services
Gateway,WSGW)可以用于更复杂的情况,比如:
支持非 Axis 客户。
支持非 Axis
托管的服务。特别是,网关可以用在“批发”方案中,在这种方案中服务提供者是外部服务的中介者或门户网站。
支持调用 WSIF 的内部服务,包括
RMI-IIOP。
为了托管,通过添加拦截器来装备 WSGW,拦截器的功能与上面描述的 Axis 处理程序的功能相同。网关将允许建立消费者标识,而不用依赖 Axis 客户处理程序。例如,当使用 WSGW 时,WHST 将支持 HTTP 认证。
结束语
WSHT 说明了“Web 服务工具箱”和“Web
服务网关”如何能用来提供操作按使用付费的 Web
服务托管系统所需要的核心功能。合同可以用来将服务和消费者标识与定价包联系起来。定价包把使用评测记录转换为发票记录,并且与消费者帐户关联起来。
最重要的是,任何服务(本地的或远程的)都可由 WHST 托管支持准备和管理,而不需要改变 Web 服务本身。像本文中介绍的这种体系架构将可以简化 Web 服务进入服务提供者环境的接受过程。
关于作者 Mike Polan 是一名 WebSphere 体系架构设计师,目前他致力于应用和服务准备,特别是 Web 服务准备开发的研究。他是 WebSphere Commerce Suite 的开发经理并领导 VisualAge C++ 和 VisualAge Java 开发小组。您可以通过 polan@ca.ibm.com 与他联系。 |