SOAP应用模式: 中间介
2002 年 9 月 01 日
SOAP应用模式是一个由四篇文章组成的系列,主要讨论的是如何将SOAP应用到各种各样的应用环境中去。本文是系列的第二篇,主要讨论在有传输交换中间介的情况下,如何应用SOAP完成应用承诺。为了描述具备中间介的应用模式,我们在一开始先描述其中会引用到的 fire-and-forget 模式。<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
在本节定义的"fire-and-forget"特性需要由图1所描述的这样一个机制来将一个SOAP消息发送给单个SOAP接收者。 SOAP发送者并不需要了解任何的消息状态信息,包括消息是否已经被发送,或是消息是否已经被接收者接收到等。底层传输协议也许实现了一个响应机制,然而描述消息是否被成功发送的状态信息将不会被返回给发送SOAP消息的SOAP处理器。
下面的代码是该模式下的一个SOAP消息示例:
回页首
图 2展示了一个基于SOAP的消息基础架构,该基础架构用于支持作为买家和卖家之间的中间介的第三方交易市场的实现。对于交易市场这样的商业模式而言,首先它会尽力召集多个商业和服务的供应商,然后买家连入交易市场,同时使用交易市场提供的服务。交易市场是作为在买家和其所挑选的卖家之间完成商业事务所需要的第三方通道而工作的,交易市场即能为B2B事务提供服务,也能为B2C事务提供服务。
在本模式下,交易市场是作为自助式中间介的形式出现的。买家连入交易市场后,针对他所需要的产品或服务张贴订单。此时,买家可能使用非常简单的客户应用,比如浏览器,也可能使用复杂的应用,比如采购系统。当交易市场接收到买家的订单之后,它会联系一组合适的卖家,这些卖家将针对这个定单进行反向竞标。交易市场将从中挑选出最有竞争力的标,然后将其作为竞标的赢家交互给买家。然后,一个采购流程将被初始化,而交易市场则作为这个事务的中间介进行工作。
从SOAP消息传输的角度来看,图 2所展示的模式中,对于买家登录订单的过程,是在买家和交易市场间发生了一组请求/相应消息的交换。当交易市场接收到订单之后,交易市场同样通过一组请求 /响应消息与一组挑选出的卖家进行交互。对于交易市场应用而言,在具体实现上,它可以选择以下面两种模式进行SOAP消息实施。第一种方案是由一个 SOAP发送者到多个SOAP接受者的一对多的消息传输交换,每个SOAP接收者位于一个卖家站点。而第二种方案则是实施多次一个SOAP发送者到一个 SOAP接受者的一对一的SOAP消息传输交换。这一情况与我们在"面向多个接收者的"Fire-and-forget"模式"中遇到的情况是类似的。在交易市场与卖家之间,将会就消息交换的特性有一些先决的协约,比如可靠性、安全性以及消息结构等等。这些特性将定义在交易市场和卖家之间需要哪些额外的 SOAP处理模块来支持这一消息交换模式。
?
经由多个中间介的通讯
在经由多个中间介的通讯模式中,中间介将代理初始发送者的消息交换,将来自初始发送者的消息转发给最终的接收者。初始发送者希望能够加强消息路由的不可抵赖性。在对消息提供路由服务的过程中,所有的中间介消息服务处理器必须将路由消息头信息记录到日志中。当消息即将被转发给最终消息接收者时,此时承担转发任务的消息处理器必须将被签名的路由消息头以及消息的接收者写入日志,以保证消息接收的不可抵赖性。
在本节描述的SOAP应用模式下,需要在初始生成消息的SOAP发送者与最终SOAP接收者之间可创建一个审计链,其中消息要送达最终 SOAP接收者,要经过一些SOAP中间介,审计链要包含所有出现的SOAP中间介。在消息路径中的每一个SOAP结点都维护了一个持久化信息库(典型的是数据库),这个数据库被用于存储对于每条消息的审计记录。而这每个SOAP结点中的路由日志处理器都有责任将每条消息的日志记录在持久化信息库中。而对于这些路由日志处理器而言,它在将消息转发给消息路径的下一个结点之前,需要对路由信息消息头实施签名。而对于消息签名而言是必须得一些机制包括对数字证书的支持,以及一些相关的配套机制等。
参考资料
SOAP Version 1.2, W3C Working Draft 9 July 2001原文:http://www.ibm.com/developerworks/cn/xml/x-soapapp/part2/