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"模式

"Fire-and-forget"来源于军事术语,其含义是指某些武器(比如一些导弹)当被发射出去之后就能够自行攻击目标,发射者无需再提供控制。而在SOAP消息的应用模式中,"Fire-and-forget"是指发出SOAP消息,然后不再去处理与该消息相关的操作。

而所谓面向单个接收者的"Fire-and-forget"模式是指:发送者期望向单个接受者发送不被答复的消息(例如,每隔15分钟发送一次股票价格更新消息)。


Figure 1.牋 面向单个接收者的"Fire-and-forget"模式图示

在本节定义的"fire-and-forget"特性需要由图1所描述的这样一个机制来将一个SOAP消息发送给单个SOAP接收者。 SOAP发送者并不需要了解任何的消息状态信息,包括消息是否已经被发送,或是消息是否已经被接收者接收到等。底层传输协议也许实现了一个响应机制,然而描述消息是否被成功发送的状态信息将不会被返回给发送SOAP消息的SOAP处理器。

下面的代码是该模式下的一个SOAP消息示例:

<env:Envelope xmlns:env="http://www.w3.org/2001/12/soap-envelope">
   <env:Body>        
       <r:StockPriceUpdate xmlns:r="http://example.org/2001/06/quotes">
           <r:Symbol>BigCo</r:Symbol>
           <r:Price>34.5</r:Price>
       </r:StockPriceUpdate>
   </env:Body>
</env:Envelope>





回页首


面向多个接收者的"Fire-and-forget"模式

而所谓面向多个接收者的"Fire-and-forget"模式是指:发送者期望向一组接受者发送不被答复的消息(例如,每隔15分钟发送一次股票价格更新消息)。

面向多个接收者的"Fire-and-forget"模式是面向单个接收者的"Fire-and-forget"模式的一个扩展。在这个模式下,需要支持将同一个SOAP消息发送个多个SOAP接收者。具体消息的传输可以使用广播分发技术来实现,当然前提是底层传输协议层支持这一技术。而另一个可替换的实现方式则是重复地执行在面向单个接收者的"Fire-and-forget"模式中所描述的机制,而每次使用一个位于期望的分发接收者列表中的一个接收者。

 




回页首


第三方中间介

所谓第三方中间介模式是来源于这样一种应用:我们知道在Internet电子商务的发展历程中,出现过这样一种服务,自主竞排交易市场 (Marketplace)。这是一个在买家和供应商之间的代理桥梁。买家将他们的需求提交给这个交易中心,交易中心会将这些需求信息广播给多个供应商。供应商收到求购信息之后,将向买家发出求购响应,求购响应是通过交易中心被传输给最终买家的,同时在交易中心将记录下这些响应。


Figure 2.牋 交易市场中间介

图 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结点中的路由日志处理器都有责任将每条消息的日志记录在持久化信息库中。而对于这些路由日志处理器而言,它在将消息转发给消息路径的下一个结点之前,需要对路由信息消息头实施签名。而对于消息签名而言是必须得一些机制包括对数字证书的支持,以及一些相关的配套机制等。


参考资料

原文:http://www.ibm.com/developerworks/cn/xml/x-soapapp/part2/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值