WSDL訊息交換模式


WSDL訊息交換模式是什麼? WSDL訊息交換模式是抽象介面中的操作的預定義輸入/輸出訊息序列。 每個模式由唯一URI表示,可以將patterns屬性指定為操作的模式。

WSDL 2.0規範(WSDL Version 2.0 Part 2:Adjuncts)提供了 3 種預定義模式:In-OnlyRobust In-OnlyIn-Out

第1種 - In-Only,由URI表示為:http://www.w3.org/ns/wsdl/in-only - In-Only模式僅定義一條進入此操作的服務提供者的單個訊息。 此訊息標籤為In,方向為inIn-Only模式不允許任何故障訊息。 以下是使用In-Only模式的操作範例:

<wsdl:operation name="SnowDay" 
      pattern="http://www.w3.org/ns/wsdl/in-only" style="http://www.w3.org/ns/wsdl/style/iri">
      <wsdl:input messageLabel="In" element="hy:SnowDayAnnouncement"/>
</wsdl:operation>

第2種 - Robust In-Only,由URI表示為:http://www.w3.org/ns/wsdl/robust-in-only - Robust In-Only模式僅定義了一條進入此操作的服務提供者的單條訊息。 此訊息標籤為In,方向為inRobust In-Only模式需要在out方向上傳送故障訊息。 如果需要,輸入訊息將觸發故障訊息。 以下是使用Robust In-Only模式的操作範例:

<wsdl:interface name="AlertInterface" >
    <wsdl:fault name="invalidEmailFault" element="InvalidEmail"/>
    <wsdl:operation name="SendAlert" pattern="http://www.w3.org/ns/wsdl/robust-in-only" style="http://www.w3.org/ns/wsdl/style/iri">
      <wsdl:input messageLabel="In" element="hy:AlertEmail"/>
      <wsdl:outfault ref="invalidEmailFault" messageLabel="Out"/>
    </wsdl:operation>
  </wsdl:interface>

第3種 - 輸入輸出,由URI表示為:http://www.w3.org/ns/wsdl/in-out - 輸入輸出模式定義 2 條訊息:輸入訊息後跟輸出訊息。 輸入訊息標記為In,方向為in。 輸出訊息標記為「Out」,方向為「out」。 輸入輸出模式需要在「輸出」方向上輸出故障資訊。 如果需要,服務提供商可以通過故障訊息替換輸出訊息。 以下是使用In-Out模式的操作範例:

<wsdl:interface name="GetQuoteInterface" >
    <wsdl:fault name="marketClosedFault" element="MarketClosed"/>
    <wsdl:operation name="GetQuote" pattern="http://www.w3.org/ns/wsdl/in-out" style="http://www.w3.org/ns/wsdl/style/iri">
      <wsdl:input messageLabel="In" element="hy:GetQuoteRequest"/>
      <wsdl:output messageLabel="Out" element="hy:GetQuoteResponse"/>
      <wsdl:outfault ref="marketClosedFault" messageLabel="Out"/>
    </wsdl:operation>
  </wsdl:interface>

一些網站包括其他訊息交換模式,如In-Optional-OutOut-OnlyRob-Out-OutOut-InOut-Optional-In等作為WSDL 2.0的一部分。 但好像還無法在WSDL 2.0 2007規範中找到它們。