Soapui-wsdl
SoapUI-WSDL
WSDLは、Webサービス記述言語の略です。 Webサービスを記述するための標準形式です。 WSDLは、MicrosoftとIBMが共同で開発しました。 WSDLは「wiz-dull」と発音され、「W-S-D-L」と綴られます。
WSDL─簡単な歴史
2001年3月に、XMLプロトコルに関するW3C XMLアクティビティのサービスを説明するために、WSDL 1.1がAriba、IBM、MicrosoftからW3C Noteとして提出されました。
WSDL 1.1はWorld Wide Web Consortium(W3C)によって承認されていませんが、勧告(公式標準)となるバージョン2.0のドラフトをリリースしたばかりであり、W3Cによって承認されています。
WSDL─注意点
WSDLは、分散および分散環境での情報交換のためのXMLベースのプロトコルです。 WSDLの他の機能のいくつかは次のとおりです-
- WSDL定義は、Webサービスにアクセスする方法と、Webサービスが実行する操作を記述します。
- これは、XMLベースのサービスとのインターフェイス方法を記述するための言語です。
- これは、XMLベースの世界規模のビジネスレジストリであるUniversal Description、Discovery、and Integration(UDDI)の不可欠な部分です。
- WSDLは、UDDIが使用する言語です。
WSDLの使用
WSDLは、インターネット経由でWebサービスを提供するために、SOAPおよびXMLスキーマと組み合わせて使用されることがよくあります。 Webサービスに接続するクライアントプログラムは、WSDLを読み取って、サーバーで使用可能な機能を判断できます。 使用される特別なデータ型は、XMLスキーマの形式でWSDLファイルに埋め込まれます。 その後、クライアントはSOAPを使用して、WSDLにリストされている関数の1つを実際に呼び出すことができます。
WSDLを理解する
WSDLは、Webサービスを3つの特定の識別可能な要素に分割し、定義すると結合または再利用できます。
個別に定義できるWSDLの3つの主要な要素は-
- タイプ
- オペレーション
- 製本
WSDLドキュメントにはさまざまな要素がありますが、これらの3つの主要な要素に含まれており、個別のドキュメントとして開発し、それらを結合または再利用して完全なWSDLファイルを形成できます。
このチュートリアルでは、CurrencyConverter WSDLを使用しています:http://www.webservicex.net
フォーマットと要素
CurrencyConverter WSDLは次のようになります-
WSDL─ポートタイプ
<portType>要素は、複数のメッセージ要素を組み合わせて、完全な一方向または往復操作を形成します。 たとえば、<portType>は、1つの要求と1つの応答メッセージを1つの要求/応答操作に結合できます。 これは、SOAPサービスで最も一般的に使用されています。 portTypeは複数の操作を定義できます。
例
- portType要素は、ConversionRateと呼ばれる単一の操作を定義します。
- 操作は、単一の入力メッセージConversionRateHttpPostInで構成されます。 *出力メッセージの操作はConversionRateHttpPostOutです。
動作パターン
WSDLは、操作の4つの基本パターンをサポートしています-
一方通行
サービスはメッセージを受信します。 したがって、操作には単一の入力要素があります。 一方向操作の文法は-
<wsdl:definitions .... >
<wsdl:portType .... >*
<wsdl:operation name = "nmtoken">
<wsdl:input name = "nmtoken"? message = "qname"/>
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
リクエスト─レスポンス
サービスはメッセージを受信し、応答を送信します。 したがって、操作には1つの入力要素があり、その後に1つの出力要素があります。 エラーをカプセル化するために、オプションのfault要素も指定できます。 要求/応答操作の文法は次のとおりです-
<wsdl:definitions .... >
<wsdl:portType .... > *
<wsdl:operation name = "nmtoken" parameterOrder = "nmtokens">
<wsdl:input name = "nmtoken"? message = "qname"/>
<wsdl:output name = "nmtoken"? message = "qname"/>
<wsdl:fault name = "nmtoken" message = "qname"/> *
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
要請─応答
サービスはメッセージを送信し、応答を受信します。 したがって、操作には1つの出力要素があり、その後に1つの入力要素が続きます。 エラーをカプセル化するために、オプションのfault要素も指定できます。 要請応答操作の文法は-
<wsdl:definitions .... >
<wsdl:portType .... >*
<wsdl:operation name = "nmtoken" parameterOrder = "nmtokens">
<wsdl:output name = "nmtoken"? message = "qname"/>
<wsdl:input name = "nmtoken"? message = "qname"/>
<wsdl:fault name = "nmtoken" message = "qname"/> *
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
通知
サービスはメッセージを送信します。 したがって、操作には単一の出力要素があります。 以下は、通知操作の文法です-
<wsdl:definitions .... >
<wsdl:portType .... >*
<wsdl:operation name = "nmtoken">
<wsdl:output name = "nmtoken"? message = "qname"/>
</wsdl:operation>
</wsdl:portType >
</wsdl:definitions>
WSDL─バインディングとサービス
*<binding>* 要素は、_portType_操作が実際にワイヤ経由で送信される方法に関する特定の詳細を提供します。
- バインディングは、HTTP GET、HTTP POST、またはSOAPを含む複数のトランスポートを介して利用可能にできます。
- バインディングは、portType操作の転送に使用されているプロトコルに関する具体的な情報を提供します。
- バインディングは、サービスが配置されている場所の情報を提供します。
- SOAPプロトコルの場合、バインディングは<soap:binding>であり、トランスポートはHTTPプロトコルの上にあるSOAPメッセージです。
- 1つのportTypeに複数のバインディングを指定できます。
サービス
*<service>* 要素は、Webサービスでサポートされるポートを定義します。 サポートされているプロトコルごとに、1つのポート要素があります。 サービス要素はポートのコレクションです。
Webサービスクライアントは、サービス要素から以下を学ぶことができます-
- サービスにアクセスする場所、
- どのポートを介してWebサービスにアクセスするか、および
- 通信メッセージの定義方法。
サービス要素には、人間が読めるドキュメントを提供するドキュメント要素が含まれています。
<wsdl:service name = "CurrencyConvertor">
<wsdl:port name = "CurrencyConvertorSoap" binding = "tns:CurrencyConvertorSoap">
<soap:address location = "http://www.webservicex.net/CurrencyConvertor.asmx"/>
</wsdl:port>
<wsdl:port name = "CurrencyConvertorSoap12"binding = "tns:CurrencyConvertorSoap12>
<soap12:address location = "http://www.webservicex.net/CurrencyConvertor.asmx"/>
</wsdl:port>
<wsdl:port name = "CurrencyConvertorHttpGet" binding = "tns:CurrencyConvertorHttpGet">
<http:address location = "http://www.webservicex.net/CurrencyConvertor.asmx"/>
</wsdl:port>
<wsdl:portname = "CurrencyConvertorHttpPost"binding = "tns:CurrencyConvertorHttpPost">
<http:address location = "http://www.webservicex.net/CurrencyConvertor.asmx"/>
</wsdl:port>
</wsdl:service>