文章目录
- 第五十四章 生成的 WSDL 的详细信息 - portType
- <portType>
- `<message>`
第五十四章 生成的 WSDL 的详细信息 - portType
在 <binding> 部分之前,WSDL 包含 <portType> 元素,每个元素通过为 <binding> 元素指定单个地址来定义单个端点。 <portType> 元素是一组命名的抽象操作和所涉及的抽象消息。
一般来说,WSDL 可以包含多个 <portType> 元素,但 Web 服务的 WSDL 只包含一个。
对于本主题前面显示的示例 Web 服务,<portType> 元素如下:
<portType name="MyServiceNameSoap"><operation name="Add"><input message="s0:AddSoapIn"/><output message="s0:AddSoapOut"/></operation>
</portType>
此元素的所有方面都自动与 WSDL 的其他部分保持一致;没有对其进行独立的控制。
<message>
在 <portType> 元素之前,<message> 元素定义操作中使用的消息。WSDL 通常为每个 Web 方法包含两个 <message> 元素。对于本主题前面显示的示例 Web 服务,这些元素如下:
<message name="AddSoapIn"><part name="parameters" element="s0:Add"/>
</message>
<message name="AddSoapOut"><part name="parameters" element="s0:AddResponse"/>
</message>
该元素指定如下:
<message>元素的name属性基于Web方法的名称。- 方法的绑定样式由前面显示的
<binding>元素决定。这决定了消息是否可以包含多个部分:- 如果绑定样式为“
document”,则消息默认只有一个部分。例如:
- 如果绑定样式为“
<message name="AddSoapIn"><part name="parameters" .../>
</message>
如果 ARGUMENTSTYLE 参数为“message”,则消息可以包含多个部分。例如:
<message name="AddSoapIn"><part name="a" .../><part name="b" .../>
</message>
- 如果绑定样式为“
rpc”,则消息可以包含多个部分。例如:
<message name="AddSoapIn"><part name="a" .../><part name="b" .../>
</message>
-
<soap:body>元素的use属性(如前面显示的<binding>元素中指定)决定了消息<part>元素的内容: -
如果
use属性为“literal”,则<part>元素包含一个element属性。例如:
<part name="parameters" element="s0:Add"/>
再举一个例子:
<part name="b" element="s0:b"/>
- 如果
use属性是“编码的”,则<part>元素包含type属性,而不是element属性。例如:
<part name="a" type="s0:ComplexNumber"/>
- 消息所引用的元素或类型的名称将按下一节所述确定。
- 这些元素和类型所属的命名空间将按照下一节中的描述来确定。.
- 另请参阅单向
Web方法的WSDL差异。 - 如果
Web服务的SOAPSESSION参数为1,则会影响此元素,如SOAP会话的WSDL差异中所述。