一个WSDL描述了一个Web Service。一个WSDL binding描述了这个service是怎么绑定到一个消息协议上的,特别的如SOAP消息协议。WSDL SOAP绑定可以是一个RPC(Remote Procedure Call)样式的绑定,也可以是一个document样式的绑定。SOAP绑定也可以有一个encoding use或一个literal use。因此我们有了四种style/use模式:
- RPC/encoded
- RPC/literal
- Document/encoded
- Document/literal
再加上document/literal wrapped pattern,当创建一个WSDL文件时就有了五种可选的样式了。那么应该选择哪一个呢?
这里说一点:RPC和document仅仅是一种术语,并不像他们的词义那些来进行区分的。它仅仅指出应该怎么把一个WSDL的binding转换成一个SOAP的message,没有更多的东西,你可以随便使用哪种。
同样的,encoding和literal也只是在WSDL到SOAP的mapping的时候有用。
下面我们就开始讨论这五种不同的样式对。首先我们先假设有一个方法:
public void myMethod(int x, float y);
RPC/encoded
这个方法对应的WSDL应该如下:
<message name="myMethodRequest">
<part name="x" type="xsd:int"/>
<part name="y" type="xsd:float"/>
</message>
<message name="empty"/>
<portType name="PT">
<operation name="myMethod">
<input message="myMethodRequest"/>
<output message="empty"/>
</operation>
</portType>
<binding .../>
<!-- I won't bother with the details, just assume it's RPC/encoded. -->
这里要注意的就是假设binding使用的RPC/encoded样式对。当基于这个wsdl转换时,它对应的soap消息应该如下样:
<soap:envelope>
<soap:body>
<myMethod>
<x xsi:type="xsd:int">5</x>
<y xsi:type="xsd:float">5.0</y>
</myMethod>
</soap:body>
</soap:envelope>
有以下几点需要留意:
优点:
缺点:
- 类型信息会降低传输性能
- 不能很容易的验证这个消息
- RPC/encoded并不是一个WS-I兼容的
RPC/literal
先看wsdl:
<message name="myMethodRequest">
<part name="x" type="xsd:int"/>
<part name="y" type="xsd:float"/>
</message>
<message name="empty"/>
<portType name="PT">
<operation name="myMethod">
<input message="myMethodRequest"/>
<output message="empty"/>
</operation>
</portType>
<binding .../>
<!-- I won't bother with the details, just assume it's RPC/literal. -->
这里使用的样式对是RPC/literal。对应的soap消息如下:
<soap:envelope>
<soap:body>
<myMethod>
<x>5</x>
<y>5.0</y>
</myMethod>
</soap:body>
</soap:envelope>
这里去掉了类型信息。
优点:
- 直观
- 操作名也存在
- 类型信息去除掉了
- 是一个WS-I兼容的
缺点:
Document/encoded
没有人使用这种样式对,因此不讨论
Document/literal
首先我们先看下面的wsdl定义
<types>
<schema>
<element name="myMethod">
<complexType>
<sequence>
<element name="x" type="xsd:int"/>
<element name="y" type="xsd:float"/>
</sequence>
</complexType>
</element>
<element name="myMethodResponse">
<complexType/>
</element>
</schema>
</types>
<message name="myMethodRequest">
<part name="parameters" element="myMethod"/>
</message>
<message name="empty">
<part name="parameters" element="myMethodResponse"/>
</message>
<portType name="PT">
<operation name="myMethod">
<input message="myMethodRequest"/>
<output message="empty"/>
</operation>
</portType>
<binding .../>
<!-- I won't bother with the details, just assume it's document/literal. -->
对应的Soap消息如下:
<soap:envelope>
<soap:body>
<myMethod>
<x>5</x>
<y>5.0</y>
</myMethod>
</soap:body>
</soap:envelope>
这个消息看起来有点像RPC/literal的soap消息。但是他们有不同。在RPC/literal消息中的myMethod是来自操作名,而这里的myMethod来自元素名。
对于一个document/literal pattern wrapped样式对,有一点基本的特征:
- 每个input message只会有一个part
- 这个part还是一个element
- 这个element名和operation名一样
- element只有子元素没有属性
这种样式的优点如下:
- 没有type信息
- 每个在soap:body里定义的内容都来自一个schema
- 你又可以得到operation名了
- 它是一个WS-I兼容的,并且符合WS-I中soap:body只有一个子元素的约束
缺点:
分享到:
相关推荐
WSDL,全称为Web Services Description Language,是用于描述Web服务的一种XML格式。它定义了服务的接口,包括服务提供的操作、消息格式、通信协议以及服务的位置。WSDL文件是Web服务客户端和服务提供者之间进行交互...
WSDL 提供了一种标准的方式来定义服务的外部可见功能,包括消息格式、消息传递的顺序以及网络地址。它允许服务请求者理解和调用远程服务,从而促进不同系统之间的交互。 #### 2. WSDL 的作用 - **服务描述**:WSDL...
Web 服务描述语言(WSDL,Web Service Description Language)是一种XML格式,用于定义网络服务的接口,包括服务的位置、操作及如何与这些服务交互。在WSDL文档中,SOAP(Simple Object Access Protocol)绑定部分...
而WSDL2JAVA工具则是Apache Axis项目提供的一种强大工具,它能够根据WSDL文件自动生成Java代码,包括客户端和服务端的存根(Stub)和骨架(Skeleton)类,极大地简化了Web服务的开发过程。 #### WSDL2JAVA工具的...
WSDL(Web Services Description Language)是一种基于 XML 的语言,用于描述网络服务的接口。本文将详细介绍如何编写一个简单的 WSDL 文件,以及如何根据该 WSDL 文件来编写服务器端与客户端的代码,并最终实现 Web...
WSDL通常与SOAP(Simple Object Access Protocol)结合使用,SOAP是一种基于XML的协议,用于在Web服务中传递信息。WSDL描述了SOAP消息应该如何构建,而SOAP提供了消息的实际内容和处理机制。 **4. WSDL的使用场景**...
**Web Services Description Language (WSDL)**,即Web服务描述语言,是一种基于XML的格式,用于描述Web服务的接口和绑定,以及如何访问这些服务。WSDL允许将Web服务表示为抽象接口,以及具体的网络端点(绑定)。...
WSDL,全称为Web Services Description Language(Web服务描述语言),是一种基于XML的应用,用于精确描述Web服务的特性,包括其功能、参数、返回值以及如何通过网络进行交互。WSDL将Web服务视为一组端点接口,允许...
WSDL(Web Services Description Language)是一种用于描述网络服务的标准格式,它能够帮助实现跨语言和跨平台的服务交互。随着互联网技术的发展,不同系统之间的通信变得越来越重要。然而,由于各种系统通常采用...
本篇文章将深入探讨WSDL文件的几个关键属性,包括`elementFormDefault`、style/use组合以及指定SoapAction的方式。 首先,我们来看`elementFormDefault`属性。这个属性决定了XML实例文档中元素的命名空间处理方式。...
WSDL通常与简单对象访问协议(SOAP)一起使用,SOAP是一种基于XML的消息传递协议,用于在Web服务中传输数据。WSDL描述了服务如何通过SOAP进行通信,包括SOAP消息的结构和发送方式。 ### 3. WSDL的使用场景 - **...
WSDL(Web Services Description Language),即Web服务描述语言,是一种基于XML的标准语言,用于描述Web服务及其交互方式。它提供了关于如何访问Web服务的信息,包括服务的端点地址、可用的操作以及相关的消息格式...
WSDL(Web Services Description Language)是用于定义Web Service接口的一种XML格式,它详细描述了服务的位置、提供的操作以及如何调用这些操作。在本实例中,我们将探讨如何使用Java和WSDL来创建和调用Web Service...
文档风格绑定(document-style binding)是指一种绑定方式,它使用文档来传递参数和返回值,而不仅仅是简单的RPC(远程过程调用)风格。 和元素在WSDL中用来定义服务的具体访问点。定义了一个或多个,每个定义了一...