.NET中的SOAP自定义处理机制
内容简介:SOAP是一种消息编码规范,是Web Services Architecture中最重要的环节,它规定了线上传输的数据格式。本文详细介绍了在.NET平台下如何对SOAP消息进行各类自定义处理,比如定义SOAP消息中参数的编码风格、定型消息格式、添加并理解消息头、在SOAP扩展中处理消息等,以便在Web Services中实现更丰富灵活的功能。这些处理是实现基于SOAP扩展的各种Web Services规范的基础,对于开发高级的Web Services应用非常重要。(Based on .net framwork 1.0)
关键字:.NET Web Services SOAP SOAP扩展 自定义
Web Services是微软.NET战略最重要的核心,而SOAP规范又是Web Services协议栈中最重要的环节,所以在.NET Framework Class Library中对SOAP的支持可谓是“无微不至”,开发人员能够很容易地对SOAP消息进行全方位的操作,从而开发出适合不同需求的Web Services。这些支持主要来自System.Web.Services.Protocols 和System.Xml.Serialization这两个名称空间,从它们的层次结构图中,我们可以看到很多与SOAP相关的类,包括属性基类(如:SoapExtensionAttribute)、异常基类(如:SoapException)、扩展基类(如:SoapExtension)等,它们提供了一个可以指定特定元素或SOAP属性名的基于属性的机制来控制SOAP消息中XML的格式,在更深入的细节上实现对SOAP消息随心所欲的操作――这也就是.NET中SOAP自定义处理机制的核心思想。以下是本文在这两个名称空间中将会涉及的部分SOAP相关类的列表(缩进表示了继承关系):
属性基类
(System.Web.Services.Protocols名称空间)
System.Web.Services.Protocols.SoapDocumentMethodAttribute
System.Web.Services.Protocols.SoapDocumentServiceAttribute
System.Web.Services.Protocols.SoapExtensionAttribute
System.Web.Services.Protocols.SoapHeaderAttribute
System.Web.Services.Protocols.SoapRpcMethodAttribute
System.Web.Services.Protocols.SoapRpcServiceAttribute
(System.Xml.Serialization名称空间)
System.Xml.Serialization.SoapAttributeAttribute
System.Xml.Serialization.SoapElementAttribute
System.Xml.Serialization.SoapEnumAttribute
System.Xml.Serialization.SoapTypeAttribute
。。。。。。。
异常基类
(System.Web.Services.Protocols名称空间)
System.Web.Services.Protocols.SoapException
System.Web.Services.Protocols.SoapHeaderException
枚举类
(System.Web.Services.Protocols名称空间)
System.Web.Services.Protocols.SoapMessageStage
System.Web.Services.Protocols.SoapParameterStyle
。。。。。。。
扩展基类
(System.Web.Services.Protocols名称空间)
System.Web.Services.Protocols.SoapExtension
System.Web.Services.Protocols.SoapHeader
System.Web.Services.Protocols.SoapUnknownHeader
消息类
(System.Web.Services.Protocols名称空间)
System.Web.Services.Protocols.SoapMessage
System.Web.Services.Protocols.SoapClientMessage
System.Web.Services.Protocols.SoapServerMessage
其中很重要也很有趣的一点是:上面所有以Attribute结尾的类,如果要使用它们各自提供的功能,可以简单的将其类名中除Attribute以外的部分用中括号括起来,然后加到Webservice或Webmethod里 ,例如:对于SoapDocumentMethodAttribute类,使用形式就为:[SoapDocumentMethod],它提供的功能下面马上会讲到。这种使用方式就是.NET中SOAP自定义处理机制的具体体现。
为了使读者能清晰地理解.NET中对SOAP消息的自定义处理机制,我将其按实现的功能以及使用的类和属性的不同分为四个部分:
浙公网安备 33010602011771号