第五十四章 生成的 WSDL 的详细信息 - portType
<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
差异中所述。
网友评论