当然这里我们学习消息路由,首先还是来了解一下与消息路由相关的一些规范,下面我们就来依次看一下WS-Routing和WS-Addressing。 为了解决这些安全性就出现了一种更简单的基于 SOAP 路由的方法:WS-Addressing。 WS-Addressing(WS-寻址): 为了改进WS-Routing ,WS-Addressing 为 Web 服务寻址提供了传输中立的机制。 WS-Addressing 使上述 WS-Routing 的简化形式化,并且添加了少量其他功能。 而WS-Addressing 当前有两种版本:WS-Addressing August 2004 和 WS-Addressing 1.0。
三、消息的保护等级与WS-Addressing 一、契约的保护等级为绑定进行消息保护设置了“最低标准” 定义在契约上消息保护级别实际上为WCF实施消息保护设置了一个“最低标准”。 HasProtectionLevel 2: contract1 None False 3: contract2 None True 三、消息的保护等级与WS-Addressing 虽然我们可以对于同一个服务契约下操作设置不同的保护级别,但是在WSDL中需要基于WS-Addressing中的寻址(Addressing)机制来识别基于操作的保护级别。 在使用的绑定不支持WS-Addressing的情况下(比如BasicHttpBinding),它会选择所有操作中等级最高的那个作为所有操作的保护级别。 出现这样的异常的原因在于:对于不支持WS-Addressing的BasicHttpBinding来说,会选择所有操作中等级最高的那个最为所有操作的保护级别。
由于SOAP规范的版本和WS-Addressing规范的版本是决定消息格式与结构的两个主要因素,所以,MessageVersion由SOAP规范和WS-Addressing规范共同决定。 WCF通过System.ServiceModel.EnvelopeVersion和System.ServiceModel.AddressingVersion两个类分别定义SOAP规范的版本和WS-Addressing 各有两个版本:SOAP 1.1 和SOAP1.2, WS-Addressing 2004和WS-Addressing 1.0。 Soap11和Soap12代表SOAP 1.1和SOAP1.2,而WSAddressingAugust2004和WSAddressing10则表示WS-Addressing 2004和WS-Addressing AddressingVersion.None则表示消息不遵循WS-Addressing规范,比如通过手工方式解决寻址问题。
我们可以这样来简单地描述WCF异常处理框架的功能实现:WCF服务端将抛出的FaultException异常进行序列化,并根绝消息的SOAP规范(SOAP 1.1或SOAP 1.2)和WS-Addressing 规范(WS-Addressing 2004和WS-Addressing 1.0)生成Fault消息。 在进行序列化或者反序列化过程之前,需要确定错误明细的类型;此外,不知道读者有没有注意到这一点:MessageFault并没有一个Action属性.对于一个SOAP消息来说,Action是一个必不可少的WS-Addressing 列表中找到一个错误明细类型相匹配的FaultContractInfo对象,如果该对象具有一个有效的Action属性,则返回之;如果该FaultContractInfo仍然没有定义Action属性,那么WCF会根据采用的WS-Addressing 版本选择默认的Action值: 1: WS-Addressing 2004:http://www.w3.org/2005/08/addressing/soap/fault 2: WS-Addressing
先比较一下它们的不同之处: 1、Apache CXF 支持 WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-I BasicProfile 2、Axis2 支持 WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy将在新版本里得到支持 3、Apache CXF 是根据Spring哲学来进行编写的
先比较一下它们的不同之处: 1、Apache CXF 支持 WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-I BasicProfile 2、Axis2 支持 WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy将在新版本里得到支持 3、Apache CXF 是根据Spring哲学来进行编写的
WS-MetadataExchange(以下简称WS-MEX)规范了与终结点(这里是广义的Web服务终结点,与具体的技术无关)如何表示成一个WS-Transfer资源,并被嵌入到WS-Addressing WS-MEX和其他的WS-*规范一起,比如WSDL、WS-Addressing、WS-Transfer、WS—Policy等一起组成了一个完整的描述Web服务元数据和元数据交换的规范体系,在正式介绍WS-MEX 二、WS-Transfer 在Web服务的世界中,很多资源(Resource)都可以通过XML的形式来表示,并通过WS-Addressing规范的方式进行寻址。 接下来对WS-Transfer的介绍,假设你对WS-Addressing和SOAP有了一个基本的了解。对这两个规范不是很熟悉的读者,可以从W3C的网站上下载官方文档。 此外,在《WCF技术剖析(卷1)》的第2章和第6章对WS-Addressing 1.0和SOAP 1.2进行了概括性的介绍。
MessageFormatter在WCF框架中的应用 第6章 消息、消息契约与消息编码 (Message, Message Contract and Message Encoding) 6.1 SOAP与WS-Addressing 6.1.1 SOAP (基于SOAP 1.2标准) 6.1.2 WS-Addressing(基于WS-Addressing 1.0)
WS-寻址请求验证最后收到的请求是否包含适当的WS-Addressing标头。WS-寻址响应验证最后收到的响应是否包含适当的WS-Addressing标头。
其中通过属性MessageVersion表示的消息的版本(SOAP版本和WS-Addressing版本)决定于绑定的同名属性。 对于一个支持WS-Addressing的SOAP消息来说,在其报头列表中包括一系列WS-Addressing报头(比如To、ReplyTo、RelatesTo等)以提供消息路由需要的寻址信息。
支持webservice标准- SOAP, WSDL, WS-I Basic Profile, WS-Addressing, WS-Security, etc. 包括:SOAP、the WSI Basic Profile、WSDL、WS-Addressing、WS-Policy、WS-ReliableMessaging、WS-Security、WS-SecureConversation
先比较一下它们的不同之处: 1、Apache CXF 支持 WS-Addressing、WS-Policy、WS-RM、WS-Security和WS-I BasicProfile 2 、Axis2 支持 WS-Addressing、WS-RM、WS-Security和WS-I BasicProfile,WS-Policy将在新版本里得到支持 3、Apache CXF 是根据Spring
-创建简单消息 Message类提供了静态CreateMessage工厂方法,所有CreateMessage重载都采用一个类型为MessageVersion的版本参数,该参数指示要用于消息的SOAP和WS-Addressing Version属性指示与消息相关联的SOAP和WS-Addressing版本;如果禁用了SOAP,则该属性为None. IsFault属性在消息为SOAP错误消息时返回true.
这一点对于路由服务非常重要,因为它允许路由服务处理携带的目标地址(WS-Addressing的<To>报头)与本终结点不一致的请求消息。 具体来说,服务端运行时正式通过请求消息WS-Addressing的这个<action>报头的值来选择当前操作列表中Action的值与此一致的操作。 我们经常使用的包括如下的六种: ActionMessageFilter:该筛选器包含一组预先指定的表示Action的字符串,判断给定的消息的WS-Addressing <Action>报头是否是其中之一 ; EndpointAddressMessageFilter:预先指定一个EndpoingAddress对象,判断给定消息的WS-Addressing <To>报头的值是否与之匹配; PrefixEndpointAddressMessageFilter :预先指定一个EndpoingAddress对象,判断给定消息的WS-Addressing <To>报头的值于指定的地址是否具有相同的前缀; EndpointNameMessageFilter:预先指定一个表示终结点名称的字符串
有兴趣的读者可以仔细分析一下:基于不同的消息版本,针对同一个MessageFault对象创建的Fault消息都有哪些差异(最后能够针对SOAP 1.1、SOAP 1.2、WS-Addressing 2004 和WS-Addressing 1.0规范进行比较)。 faultmessage.soap12.addressing10.xml"); 23: } 24: 25: } 26: } 基于SOAP 1.1 + WS-Addressing Message Timeout</faultstring> 9: </s:Fault> 10: </s:Body> 11: </s:Envelope> 基于SOAP 1.2 + WS-Addressing
接下来的消息部分,内容很多,但实际中比较重要的仅仅是WS-Addressing的相关属性和在消息头中添加安全信息。WS-Addressing的相关属性如下表所示。
例如WS-Security和WS-Addressing。 Apache Axis2的主要特征:(1)快速。(2)内存占用小(3)热部署(4)异步Web Services。
SOAP与WS-Addressing 6.1.1. SOAP 6.1.2. WS-Addressing 6.2. 消息 6.2.1. 消息版本 6.2.2. 如何创建消息 6.2.3.
: 7: [XmlText] 8: public string Location { get; set; } 9: } MetadataReference 按照WS-Addressing 2004或者WS-Addressing 1.0规范,如果元数据成为一种可被寻址的资源(Addressable Resource),那么可以通过终结点引用(Endpoint Reference)的方式来定位该资源
根据CXF官方的说明,CXF包含以下特性: 支持大量的Web Service标准,包括SOAP、WS-I Basic Profile、WSDL、WS-Addressing、WS-Policy、WS-ReliableMessaging