最新のWeb開発のチュートリアル
 

XML WSDL


  • WSDLは、Webサービス記述言語の略
  • WSDLは、Webサービスを記述するために使用され
  • WSDLは、XMLで記述されています
  • WSDLは、2007年6月26日からW3C勧告です

WSDLドキュメント

WSDL文書は、Webサービスを記述します。 これは、これらの主要な要素を使用して、サービスの場所、およびサービスのメソッドを指定します。

素子 説明
<types> 定義(XML Schema) Webサービスによって使用されるデータ型を
<message> 各動作のためのデータ要素を定義します
<portType> 実行され、メッセージが関与することができる操作について説明します。
<binding> 各ポートタイプのためのプロトコルとデータ形式を定義します

WSDL文書の主な構造は次のようになります。

<definitions>

<types>
  data type definitions........
</types>

<message>
  definition of the data being communicated....
</message>

<portType>
  set of operations......
</portType>

<binding>
  protocol and data format specification....
</binding>

</definitions>

WSDLの例

これは、WSDL文書の簡略化された割合です。

<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>

この例では<portType>要素が定義され"glossaryTerms"の名前とport 、および"getTerm"の名前などoperation

"getTerm"操作が持つinput messageと呼ばれる"getTermRequest"output messageと呼ばれる"getTermResponse"

<message>要素が定義するparts 、各メッセージのと関連するデータ型を。


<portType>要素

<portType>要素が定義されa web service 、 operationsを行うことができ、 messages関与しています。

リクエスト・レスポンス型は、最も一般的な操作タイプですが、WSDLは、4つのタイプを定義しています。

タイプ 定義
One-way 操作は、メッセージを受信できますが、応答を返しません
Request-response 操作は要求を受信することができ、応答を返します。
Solicit-response 操作は要求を送信することができますし、応答を待ちます
Notification 操作は、メッセージを送信することができますが、応答を待機しません

WSDLワンウェイ操作

一方向の動作例:

<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 >

上記の例では、portTypeの"glossaryTerms"呼ばれる一方向の動作定義"setTerm"

"setTerm"操作は使用して新しい用語集メッセージを入力可能にする"newTermValues"の入力パラメータを持つメッセージ"term"および"value" 。 ただし、出力は動作のために定義されていません。


WSDLのリクエスト - レスポンス操作

要求 - 応答動作例:

<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>

上記の例では、portTypeの"glossaryTerms"と呼ばれる要求-応答操作定義"getTerm"

"getTerm"操作と呼ばれる入力メッセージが必要です"getTermRequest"と呼ばれるパラメータを持つ"term" 、と呼ばれる出力メッセージが返されます"getTermResponse"呼ばれるパラメータで"value"


WSDLは、SOAPへのバインド

WSDLバインディングは、Webサービスのためのメッセージフォーマットとプロトコルの詳細を定義しています。

要求 - 応答動作例:

<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>

<binding type="glossaryTerms" name="b1">
   <soap:binding style="document"
   transport="http://schemas.xmlsoap.org/soap/http" />
   <operation>
     <soap:operation soapAction="http://example.com/getTerm"/>
     <input><soap:body use="literal"/></input>
     <output><soap:body use="literal"/></output>
  </operation>
</binding>

bindingの名前とタイプ-要素には次の2つの属性を持っています。

name属性は、 (you can use any name you want)バインディングの名前、および定義typeこの場合には、結合のためのポートへの属性ポイントを"glossaryTerms"ポート。

soap:binding -スタイルと輸送要素には次の2つの属性を持っています。

style属性は、することができ"rpc"または"document" 。 このケースでは、文書を使用しています。 transport属性は、使用するSOAPプロトコルを定義します。 このケースでは、HTTPを使用しています。

operation要素は、portTypeのが公開される各操作を定義します。

操作ごとに、対応するSOAPアクションが定義されなければなりません。 また、入力と出力のエンコード方法を指定する必要があります。 このケースでは使用"literal"