2002-08-26 10:50
Web服务的计量与统计
--一种动态电子商务解决方案
Dietmar Kuebler
软件设计师,IBM Software
Group
Wolfgang Eibach
软件设计师,Banking Solutions,IBM Software
Group
2001 年 7 月
作者在本文中描述了一个面向可由服务提供者为服务请求者实现的商业 Web 服务的通用定价模型。他们提出的解决方案显示了 Web
服务的使用如何被计量以及计量所得到的数据(供随后的统计与记账使用)。文中提出的解决方案自身以示例的方式作为 Web
服务得以实现。
对 Web 服务定价模型的需求
随着 Web 服务在业界的发展,面向商业 Web
服务提供者的商业模型会成为受到越来越多的瞩目和讨论的对象。如今发布的 Web
服务基本上都是免费的,因此并未对其价值进行衡量。然而随着更高价值的服务(例如,支付处理)的出现,对于一个能有效衡量由服务请求者调用的 Web
服务模型的需求也将不断增长。由于这些服务并不依赖于浏览器,因此广告收入在这一环境中多少会失去意义,这就必须用另一个模型来对其进行替换。
Web 服务及其体系结构的概述
Web
服务是一个被包装成单一实体,且被发布以供其它程序使用的功能集合,它引入了由程序启动的事务对使用浏览器人工启动的事务的置换。它们能在分布式环境中得到描述、发布、发现以及动态调用,这意味着
Web 服务是完全建立在因特网标准之上的。
Web 服务背后的体系结构概念是面向服务的体系结构(service-oriented architecture,SOA)。它描述了三个基本角色:
服务提供者
服务中介者
服务请求者
如图 1 所示,这些角色通过
find、bind 和 publish/unpublish 操作进行交互。
图 1:Web 服务组件
服务提供者提供服务,并将它们通过注册方进行发布。服务中介者为发布及定位服务提供支持。而服务请求者则通过服务中介者查找所需的服务并通过服务提供者绑定到服务。
创建 Web 服务定价模型的难题
当前 Web
服务倡议的发展相当快,并且面临着许多技术难题,其中有:
可靠性与安全性
事务与可伸缩性
可统计性与测试,等等。
本文中简要说明的解决方案主要关注的是 Web
服务的统计这一问题领域,特别观察了面向服务提供者的商务管理以及他们如何才能有效地为他们所提供的服务向服务请求者收费。
计量与统计模型
计量与统计模型是专为 Web 服务设计的,它采用了比测量 IP
地址间的流量、对发送的电子邮件进行计数,或者记录特定用户所使用的存储量更为高级的方法。尽管它的设计是用来支持使用 Web
服务的服务提供者的,但每个提供者仍能在他们自己的系统中运行不同的 Web 服务。总的来说,我们考虑的是:
简单服务,类似股票行情服务或温度服务等没有服务质量担保、且可以免费获得的服务。
客户在商业交易中所使用的服务。在这种服务中,服务质量起到了非常重要的作用,而该服务很可能不是免费提供的。
对于后一种服务,服务提供者需在使用时对其进行审计,并为其记账。这通常是定期实行的,同时也是要用到计量和统计模型的地方。
模型是在这样一个基本设想上进行操作的,即价值较高的 Web 服务是通过服务级别协议(Service Level Agreement)(SLA's)或其等效协议订立合同的,这表明双方对合同达成一致意见。合同涵盖了服务惯例的所有属性以及提供者和请求者如何对其进行使用,它的订立为计量服务的使用建立了基础。合同还可包含使用 Web 服务的环境先决条件。
一旦请求者(或客户方)与提供者签订了合同(或进行了注册),请求者就为提供者和服务计量所知了。这可通过用电子方式签订关于使用 Web 服务的合同和证书来实现。
合同提供了有关下列事项的详细信息:
合同的类型:长期的、临时的、限期的、无限期的,等等
合同的生效日期和终止日期
使用的时间模型:每天、周一到周五,等等
数量模型,规定了所提供服务的数量限制
安全性:加密与认证的签名或证书
计量与统计服务通过证书的内部使用将合同中详细说明的请求者与提供者之间的关系存储起来。这对于记账用途来说特别重要,从而可以避免对服务请求者的错误收费。服务请求者在使用有合同的服务时必须同时使用一个带签名的
SOAP 消息。
请注意,合同的使用并不能排除不同地动态发布的 Web 服务之间的关系;它仅仅要求使用一个合适的使用模型。
计量的功能性适合很多可能的商业模型,如:
点击付款/付费使用模型
预订模型
租用模型
欲了解关于不同收入模型的讨论,请参阅参考资料部分。
用途与功能性
计量与统计 Web 服务通常充当 Web
服务的资源计数器。它为下列事项提供了输入:
根据服务提供者的等级模型进行记账(例如:公共记账接口)
支付与税收处理
定义如下的功能与统计图:
记录用户使用服务 xyz 的起始时间
记录用户使用服务 xyz 的结束时间
记录一个特定用户的全部资源使用量
报告每次请求的使用服务统计数据
创建服务请求者(Service Requestor,SR)账户(临时账户和合同)
创建服务提供者(Service Provider,SP)账户
如果用户标识得到使用所请求的服务标识(合同元素)的许可,则对查询作出答复。
创建与 XML 一致的 IPDR.org 使用记录
计量服务使得用 XML
文件那样的标准格式来检索使用数据成为可能。该数据能在成批的模型中使用,也就是说,它可供一个支持符合处理标准的输入的记账产品使用。
面向基于 IP 的服务的网络数据管理用途
服务元素参与了基于 IP
的服务的传递,这些服务元素中的使用数据的交换用到了一些技术信息,IPDR 组织指定这些技术信息中哪些是充分的。他们开发了一个框架,可以限定 IP
网络和服务元素以及支持系统,并描述了系统间的关系。这一框架提供了一个模板,该模板指定了需要交换的 IP 资源类型和服务使用信息。
所有 IPDR 服务通用的元素是在一个单独的 Master IPDR Schema
文档中被声明。服务专用模式指定了定义每项服务特定的 IPDR 元素所需的数据类型。在本文展示的引导实现中,我们根据计量与统计模型开发了一个 Web
服务专用模式。
概念体系结构的计量
图 2:概念体系结构的计量
图 2 展示了作为 Web
服务实现的资源计数器的概念体系结构。服务请求者(客户方)在服务提供者的服务器上执行服务。如果存在合同,并且调用的服务不是免费的,服务提供者就会向计量服务发送一个“记录用户起始时间”的请求。这一请求携带着服务请求者的用户标识,可供计量服务作为关键字用来为该用户查找统计模型及当前计量数据。被提议的概念还将计量服务定义为一种需使用
SOAP 消息进行访问的 Web 服务。它允许服务提供者或者将计量作为在其自身的位置实现的本地服务,或者使用提供该项服务的可用的 Web
服务提供者。
计量服务在其数据库中保存着不同的统计模型,它反映了服务请求者与服务提供者之间合同的统计部分。合同的这一部分可能指出了允许客户方何时使用服务、每天或每月的服务最大使用量,等等。它还根据时间、调用数目或一些其它的模型规定如何对服务收费。
作为对“记录用户起始时间”的响应,计量服务可能会指出当前不允许客户使用请求的服务,或者已经超过了最大使用量。在得到肯定的响应时,服务提供者会执行请求的服务,并且会在执行结束后用“记录用户结束时间”的请求通知计量服务。
服务提供者可以随时请求得到客户方的统计数据供记账使用。
解决方案的组件
图 3
显示了建立一个计量服务平台所需的组件。与服务提供者的连接是使用 SOAP 通过 HTTP 实现的。我们假定计量服务是在 Web 服务器平台上实现的。一个类似
Websphere 的 Web 应用服务器和一个 SOAP 服务器是 Web
应用服务器平台上可用的标准组件。另外还需要两个附加组件(稍后我们将加以讨论)以实现计量服务。
图 3:组件概述
资源计数器服务组件从服务提供者处接收进入的请求,提供被请求的服务并返回响应。该组件与一个带有 XML 扩展的关系数据库连接在一起,如带有 XML 扩展器的 DB2,并为指定的服务请求者检索统计模型和当前账户记录。如果该统计模型不排除服务的执行,则资源计数器服务组件将更新当前数据,并给服务提供者一个肯定的响应,随后该服务提供者开始执行该服务。
已订立合同的 Web 服务组件会对进入的 SOAP 请求进行认证。合同对于服务请求者必须可用,否则请求将遭拒绝。
使用案例
图 4
中的顺序图表显示了一个经过认证的服务请求者是如何请求可记账的服务的。服务请求者与服务提供者之间有一个有效合同。服务提供者利用过滤器来检查请求者的权限,并与计量服务提供者进行交互。然后该过滤器在
SOAP RPC 调用过程中集成数字签名。(请参阅参考资料部分中的教程,来获取一个这样的示例。)
图 4:资源计数器使用案例
上述图表示范的过程中执行了下列步骤:
SOAP 绑定(SOAP Bind)请求服务提供者提供的 Web 服务
服务提供者过滤器使用提供的签名来检查服务请求者的认证,并在万一没有认证的情况下给出一个 SOAP 错误(SOAP Fault)响应。
SOAP 请求被发送给计量服务提供者,请求其对 Web 服务进行计数,而计量服务提供者根据合同的详细信息验证服务提供者的请求,并开始计数
服务提供者执行服务
Web 服务完成
SOAP 请求消息被发送到资源计数器以停止计数
SOAP
响应消息被发送到服务请求者,表明服务已经完成,并返回结果
为简单起见,我们省略了次要的交互作用(也就是出错情况以及验证签名所需的认证机构)。
引导实现
我们实现了一个原型来展示计量的用法。代码被集成到 IBM Web
Services ToolKit(可从 IBM Alphaworks 中获得;请参阅参考资料)中的 Gourmet2Go 演示应用程序中。
图 5 展示了由使用 Gourmet2Go 演示应用程序和注册服务的用户在几次会话期间收集到的数据。正如我们先前讨论过的那样,服务根据不同的演示目的被分配了不同类型的使用模型。
结论
应包含在企业商务交易中的有价值的 Web
服务需要关于服务提供者如何对服务的使用进行收费的模型。在本文中,我们已经就此问题展示了一个可能的解决方案。
一个使用该服务来计量 Web 服务使用的服务提供者首先在计量服务中注册可用的 Web 服务。选择使用服务提供者提供的某个服务(如,在仔细地查过 UDDI 注册方以后)的服务请求者预订使用该服务并订立合同。合同的一部分是选择一个预先定义的使用模型并在诸如 X509.v3 的证书标准上达成一致。这对于请求者签名 SOAP 消息以及提供者评测正确的请求者都是必要的。一种典型的情况是,提供者定期使用计量服务来生成记账数据对签过合同的请求者进行收费。
我们建议的模型是作为 Web 服务自身来实现的。服务提供者能将一个类似的模型直接集成到其服务提供者平台中,但这样就会失去一些可能会飞速发展的 Web 服务的优势。
关于作者 Dietmar Kuebler 是一个在 IBM Boeblingen 实验室工作的软件设计师。他曾担任过开发、技术营销和项目管理几个方面的各种职务,具有在多环境下进行结构设计和软件开发方面的广泛经验。它的专业技术领域包括 OO 技术、Java、WebSphere 以及中间件技术。 |
Dietmar 和 Wolfgang 目前正在 IBM Boeblingen 实验室从事 Web 服务倡议的工作。 |