1.
为什么需要
WS-Addressing
为什么会需要
WS-Addressing
?在出现
WS-Addressing
之前,我们都是如何让服务之间互相得到数据的呢?
当然,我们是通过
http
数据包来定义的,一段
http
数据包里包括了数据包发送的目的地,发送过去的动作,发送的格式等等,这个数据包直接通过复杂的网络,发送过去,让接受方接受。
(
具体请参照下图中的红色加粗字体
)
---[HTTP request - http://localhost:80/jaxws-wsaddressing_replyto/addnumbers]---
Content-length: 627
Content-type: text/xml;charset=utf-8
Accept: text/xml, multipart/related
Soapaction: "http://server.wsaddressing_replyto/AddNumbersImpl/addNumbersRequest"
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S=http://schemas.xmlsoap.org/soap/envelope /
xmlns:wsa="http://www.w3.org/2005/08/addressing">
<S:Header>
<To xmlns="http://www.w3.org/2005/08/addressing">
http://localhost:80/jaxws-wsaddressing_replyto/addnumbers
</To>
<Action xmlns="http://www.w3.org/2005/08/addressing">
http://server.wsaddressing_replyto/AddNumbersImpl/addNumbersRequest
</Action>
</S:Header>
<S:Body>
<ns2:addNumbers xmlns:ns2="http://server.wsaddressing_replyto/">
<arg0>10</arg0>
<arg1>20</arg1>
</ns2:addNumbers>
</S:Body>
</S:Envelope>
--------------------
但是,这种处理方法,对应简单的点到点数据传输是可以的,但是一旦遇到了异步的,分布式的系统的话,这样的解决方法就不行了,具体问题如下:
1)如果在异步传输下,服务
A
发送数据给服务
B
,但是服务
B
的正常响应,非正常响应,错误
响应都是不同的,那么怎么在
http
数据包来定义呢?
2)
如果服务
A
发送数据给服务
B
,但是调用的是服务
B
的不同版本。比如服务
B
有三个不同的版本,需要通过调用时候传递的参数来决定调用的版本。那么简单的
http
数据包定义能应付吗?
为了解决这些技术问题,
IBM,MS,BEA
等公司联合推出了
WS-
Addressing
协议。
WS-
Addressing
协议的最新官方文档如下:
http://www.w3.org/Submission/ws-addressing/
WS-
Addressing
协议最简单的定义就是,在
SOAP
消息的
Header
中,用一系列
XML
标签定义了服务传递中间的目的地,
Action
,
ReplyTo
,
Fault
处理等等传输层细节。
---[HTTP request -
http://localhost:80/jaxws-wsaddressing_replyto/addnumbers]---
Content-length: 627
Content-type: text/xml;charset=utf-8
Accept: text/xml,
multipart/related
Soapaction:
"http://server.wsaddressing_replyto/AddNumbersImpl/addNumbersRequest"
<?xml version='1.0' encoding='UTF-8'?>
<S:Envelope xmlns:S=http://schemas.xmlsoap.org/soap/envelope /
xmlns:wsa="http://www.w3.org/2005/08/addressing">
<S:Header>
<wsa:To>
http://localhost:80/jaxws-wsaddressing_replyto/addnumbers
</wsa:To>
<wsa:ReplyTo>
<Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</wsa:ReplyTo>
<wsa:FaultTo>
<Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</wsa:FaultTo>
<wsa:MessageID>uuid:71dc765e-1c1f-4fff-ac77-1681eb416005</wsa:MessageID>
<To xmlns="http://www.w3.org/2005/08/addressing">
http://localhost:80/jaxws-wsaddressing_replyto/addnumbers
2.
WS-Addressing
是如何传输数据的
我们在上面谈了,为什么需要
WS-Addressing
协议。下面我们来谈一谈
WS-Addressing
是如何传输数据的
WS-Addressing
协议通过在
SOAP
消息的
header
中加入数据的方式来传送数据。具体的传送方法有如下两种:
1)Endpoint Reference
2)Message Addressing Properties
我们可以打个最简单的比方来解释上面两种技术,如果南京的小李要寄信给上海的小王,那么
Message Addressing Properties
就好像信封的格式
(
比如什么地方写邮编,什么地方写地址
)
,而
Endpoint Reference
就好像信封上面具体的邮编,地址的内容
<s:Envelope xmlns:s="..." xmlns:wsa="...">
<s:Header>
<wsa:Action>http://skonnard.com/SubmitClaim</wsa:Action>
<wsa:To>http://skonnard.com/Claims/Submit.asmx</wsa:To>
<wsa:From>
<wsa:Address>http://skonnard.com/main/sub.asmx</wsa:Address>
<wsa:ReferenceProperties>
<c:PatientProfile>123456</c:PatientProfile>
<c:CarrierID>987654</c:CarrierID>
</wsa:ReferenceProperties>
</wsa:From>
<wsa:ReplyTo>
<wsa:Address>http://skonnard.com/resp/resp.asmx</wsa:Address>
<wsa:ReferenceProperties>
<c:PatientProfile>123456</c:PatientProfile>
<c:CarrierID>987654</c:CarrierID>
</wsa:ReferenceProperties>
</wsa:ReplyTo>
<wsa:FaultTo>
<wsa:Address>http://skonnard.com/fault/err.asmx</wsa:Address>
<wsa:ReferenceProperties>
<c:PatientProfile>123456</c:PatientProfile>
<c:CarrierID>987654</c:CarrierID>
</wsa:ReferenceProperties>
</wsa:FaultTo>
</s:Header>
<s:Body xmlns:c="http://example.org/claims">
<c:SubmitClaim> ... </c:SubmitClaim>
</s:Body>
</s:Envelope>
3.
WS-Addressing
都传输了什么数据
最后我们来谈一谈
WS-Addressing
到底能传输什么数据的?
数据分类
|
标签名
|
标签含义
|
Endpoint Reference
|
/wsa:EndpointReference
|
|
/wsa:EndpointReference/wsa:Address
|
|
/wsa:EndpointReference/wsa:ReferenceProperties/
|
|
/wsa:EndpointReference/wsa:ReferenceProperties/{any}
|
|
/wsa:EndpointReference/wsa:ReferenceParameters/
|
|
/wsa:EndpointReference/wsa:ReferenceParameters/{any}
|
|
/wsa:EndpointReference/wsa:PortType
|
|
/wsa:EndpointReference/wsa:ServiceName
|
|
/wsa:EndpointReference/wsa:ServiceName/@PortName
|
|
/wsa:EndpointReference/wsp:Policy
|
|
/wsa:EndpointReference/{any}
|
|
/wsa:EndpointReference/@{any}
|
|
Message Addressing Properties
|
/wsa:MessageID
|
为了防止冗余数据传输的标志
|
/wsa:RelatesTo
|
关联
URI
|
/wsa:ReplyTo
|
正常响应的
URI
|
/wsa:From
|
发出请求的
URI
|
/wsa:FaultTo
|
出错响应的
URI
|
/wsa:To
|
发送目的地的
URI
|
/wsa:Action
|
接受信息方处理的
URI
|
分享到:
相关推荐
本文旨在深入探讨WS-Addressing的概念及其在SOA环境中的作用。 #### 二、WS-Addressing背景与需求 ##### (一)问题提出 尽管SOAP协议定义了Web Services之间消息传递的基本格式,但并未涉及如何寻址Web Services的...
在本文中,我们将深入探讨 Laravel 开发中的一个重要扩展——`laravel-addressing`。这个包专门设计用于在 Laravel 应用程序中提供强大的地址管理功能,它为开发者提供了一个优雅的方式来处理和存储用户的地址信息。...
在本系列的第二部分中,我们将深入探讨如何扩展在第一部分中介绍的JavaScript库,以支持Web服务寻址语言(WS-Addressing)和Web服务资源框架(WS-ResourceFramework)。这两个规范对于构建复杂的分布式系统至关重要...
Cisco IOS IP Command Reference, Volume 1 of 4 -- Addressing and Services
JAX-WS API,用于Web服务开发 WSDL优先工具 Java优先支持 JAX-RS (JSR 311 1.0) API,用于RESTfulWeb服务开发 JavaScript编程模型,用于客户端和服务端开发 Maven工具 支持CORBA HTTP和JMS传输层 可嵌入的...
WS攻击者 ... WS-Addressing欺骗:请参阅 XML签名包装:请参阅 基于XML的DoS攻击:请参阅 新的自适应和智能拒绝服务攻击(AdIDoS) XML加密攻击:有关攻击和攻击的一般概述,请参见此博客文章( )。进
信息安全_数据安全_AppSecEU2016-Daniel-Kefer-Addressing-S 可信编译 漏洞分析 数据分析 定向攻击 云数据库
本文将基于“Web Service Standards Overview”这一文档进行深入解析,并提炼出相关的Web服务标准知识点。此文档由innoQ Deutschland GmbH与innoQ Schweiz GmbH联合发布,提供了对SOAP规范以及一系列WS-*、WS-I标准...
### Spring Web Services (1.5.9):深入解析与应用实践 #### 一、Spring Web Services 概述 **Spring Web Services** 是一个...无论是对于初学者还是经验丰富的开发者来说,Spring-WS 都是一个值得深入学习的框架。
- **WS-Addressing**:支持 WS-Addressing 标准,提高消息的可靠性。 - **EndpointInterceptor**:拦截请求和响应,进行额外的处理或验证。 综上所述,Spring Web Services 是一个功能强大且灵活的框架,它简化了 ...
官方版本,亲测可用
标题中的“XEP100 - EEEPROM - Addressing - CW46_continuedy91_MC9S12XEP100_源”暗示了我们正在讨论一个与微控制器编程相关的主题,特别是关于MC9S12XEP100型号的微控制器以及其EEPROM(电可擦可编程只读存储器)...
官方版本,亲测可用
Autonomous addressing protocols require a distributed and self-managed mechanism to avoid address collisions in a dynamic network with fading channels, frequent partitions, and joining/leaving nodes....
composer require galahad/laravel-addressing 基本用法 国家 $ country = Addressing :: country ( 'US' ); echo $ country -> getName (); // "United States" echo $ country -> getCountryCode (); // "US" ...
本文将深入探讨PCIe 5.0的关键技术改进,包括规范状态、通道损失、参考时钟抖动测量以及通道解决方案空间。 首先,PCIe 5.0的基础规格在2019年第二季度发布了1.0版本,详细描述了芯片级在堆栈所有层级的行为。此外...
**标题**:“Networkers2009:BRKNMS-1340 - Addressing the Payment Card Industry (PCI) standard version 1.2 with Cisco Solutions” **描述**:此标题明确指出该文档是关于如何利用思科解决方案来应对支付卡...
这些示例可以帮助初学者深入理解这两种寻址方式,并通过实践掌握其用法。 总结来说,了解并熟练运用西门子PLC的数组和间接寻址技术,是编写高效、灵活的控制程序的关键。通过对提供的示例进行学习和实践,开发者...
同时,通过阅读其白皮书和观看其演示,我们可以更深入地了解其技术如何推动汽车安全向前发展。 在汽车行业的价值主张方面,CoreAVI不仅是开放GPU安全标准的行业领导者,而且拥有在最严苛的运输应用场合中取得最高...