SOAPBinding样式ument和rpc分析比较.doc
文本预览下载声明
大部分?Web?服务都是围绕着远程过程调用而构建的,而?WSDL?规范允许另外一种?Web?服务体系结构:文档样式(?document style?)。在该体系结构中,整个文档在服务客户端和服务器之间进行交换。在本文中,?James McCarthy?将向您解释文档样式以及应该何时使用它。
在?Web?服务描述语言(?Web Service Definition Language?,?WDSL?)规范中隐含着一个非常巧妙的转换开关,它可以将?Web服务的?SOAP?绑定从远程过程调用转换成?pass-through?文档。在?SOAP?协议绑定中的样式属性可以包含这两个值中的一个:?rpc?或document?。当属性被设定为文档样式时,客户端知道应该使用?XML?模式而不是远程过程调用约定。本文将提供对这个?WSDL?转换开关的说明,描述它的好处,并将解释应该何时使用?pass-through?文档。
首先,让我们简要地谈谈?WSDL?的一些要点,来理解这个巧妙的转换是如何发生的。?WSDL?是一项?XML?规范,它被用来描述Web服务以及对于到达端点(服务)的协议相关的需求。?WSDL?用抽象术语来描述服务;通过可扩展的绑定定义,它能够为使用具体术语调用服务定义协议和数据格式规范。下面的语法是直接从?WSDL?规范中摘?录出来的,展示了在绑定中所包含的可扩展性元素:?
wsdl:definitions ....
??? wsdl:binding name=nmtoken type=qname *
??????? -- extensibility element (1) -- *
??????? wsdl:operation name=nmtoken *
?????????? -- extensibility element (2) -- *
?????????? wsdl:input name=nmtoken? ?
?????????????? -- extensibility element (3) --
?????????? /wsdl:input
?????????? wsdl:output name=nmtoken? ?
?????????????? -- extensibility element (4) -- *
?????????? /wsdl:output
?????????? wsdl:fault name=nmtoken *
?????????????? -- extensibility element (5) -- *
?????????? /wsdl:fault
??????? /wsdl:operation
??? /wsdl:binding
/wsdl:definitions ?
WSDL?规范通常描述三种绑定扩展:?HTTP GET/POST?、?MIME?以及?SOAP version 1.1?。?HTTP GET/POST?和?MIME?中定义的绑定扩展用来定义与标准的?Web?应用程序进行通信的需
求,这些应用程序可能返回(也可能不返回)?XML?文档。在发送或返回?XML?文档时,?HTTP GET/POST?绑定的扩展是隐式的文档样式。
SOAP?绑定扩展用来定义支持?SOAP?信封协议的服务。?SOAP?信封是一种简单模式,它设计成能包含?XML?消息,提供特定于应用程序的消息头和消息体。?SOAP?绑定的扩展使?WSDL?文档能够声明?SOAP?消息的需求,这样应用程序就能够与服务正确通信。SOAP?扩展允许将?SOAP?消息的样式声明为文档或?RPC?。如果在?soap:binding?元素中声明了样式属性,那么该样式将成为所有没有显式声明的样式属性的?soap:operation?元素的缺省值。如果在?soap:binding?元素中没有声明样式属性,那么缺省的样式就是文档。下面是文档样式的显式声明:
soap:binding style=document transport=uri ?
不管?soap:binding?元素中的声明如何,?soap:operation?元素可以覆盖每个操作的声明,就像这样的:
?
soap:operation soapAction=uri style=document ?
在声明了文档样式的?SOAP?消息中,原始(?as-is?)或编码(?encoded?)的消息被直接放置在?SOAP?信封的体部。
如果样式声明为?RPC?,消息就封装在包装器元素中,同时带有从操作名属性中提取的的元素的名称以及从操作名称空间属性中提取的名称空间。
勿庸置疑,使用?XML?调用跨平台的远程过程调用的能力是非常有用的,它是使用?Web?服务的非常有
显示全部