<portType> 元素是最重要的 WSDL 元素。


WSDL 端口

<portType> 元素是最重要的 WSDL 元素。


它可描述一個(gè) web service、可被執(zhí)行的操作,以及相關(guān)的消息。


可以把 <portType> 元素比作傳統(tǒng)編程語言中的一個(gè)函數(shù)庫(kù)(或一個(gè)模塊、或一個(gè)類)。



操作類型

請(qǐng)求-響應(yīng)是最普通的操作類型,不過 WSDL 定義了四種類型:

類型定義
One-way此操作可接受消息,但不會(huì)返回響應(yīng)。
Request-response此操作可接受一個(gè)請(qǐng)求并會(huì)返回一個(gè)響應(yīng)
Solicit-response此操作可發(fā)送一個(gè)請(qǐng)求,并會(huì)等待一個(gè)響應(yīng)。
Notification此操作可發(fā)送一條消息,但不會(huì)等待響應(yīng)。


One-Way 操作

一個(gè) one-way 操作的例子:

<message name="newTermValues">
      <part name="term" type="xs:string"/>
      <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
      <operation name="setTerm">
              <input name="newTerm" message="newTermValues"/>
      </operation>
</portType >

在這個(gè)例子中,端口 "glossaryTerms" 定義了一個(gè)名為 "setTerm" 的 one-way 操作。

這個(gè) "setTerm" 操作可接受新術(shù)語表項(xiàng)目消息的輸入,這些消息使用一條名為 "newTermValues" 的消息,此消息帶有輸入?yún)?shù) "term" 和 "value"。不過,沒有為這個(gè)操作定義任何輸出。


Request-Response 操作

一個(gè) request-response 操作的例子:

<message name="getTermRequest">
      <part name="term" type="xs:string"/>
</message>

<message name="getTermResponse">
      <part name="value" type="xs:string"/>
</message>

<portType name="glossaryTerms">
    <operation name="getTerm">
      <input message="getTermRequest"/>
      <output message="getTermResponse"/>
    </operation>
</portType>

在這個(gè)例子中,端口 "glossaryTerms" 定義了一個(gè)名為 "getTerm" 的 request-response 操作。

"getTerm" 操作會(huì)請(qǐng)求一個(gè)名為 "getTermRequest" 的輸入消息,此消息帶有一個(gè)名為 "term" 的參數(shù),并將返回一個(gè)名為 "getTermResponse" 的輸出消息,此消息帶有一個(gè)名為 "value" 的參數(shù)。