コンテンツにスキップ

Web Services Description Language

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。114.165.161.204 (会話) による 2017年9月9日 (土) 03:17個人設定で未設定ならUTC)時点の版 (WSDLの構成要素: en:WSDL(17:54, 15 July 2017 )部分訳)であり、現在の版とは大きく異なる場合があります。

WSDL 1.1 文書、 WSDL 2.0 文書の定義に関する概念図

Web Services Description Language (WSDL ウィズダル) とは、Webサービス記述言語の意で、SOAPによるXML Webサービスのインタフェースを記述するインタフェース記述言語。通常その表現にはXMLを使う。WSDLは、サービスの呼出方法、それが期待するパラメータ群、それが返すデータ型について、機械可読な形式の記述を提供する。従って、その目的はプログラミング言語におけるメソッド・シグネチャの役割に似ている。

WSDLの現在のバージョンはWSDL 2.0である。省略語WSDLにおけるDの意味はバージョン1.1当時の「Definition」から変更されている。

関連文書に多数の混乱があるため、まず、必ずWS-IのBasic Profileの「5. Service Description」[1]を熟読すべきである。

Description

Representation of concepts defined by WSDL 1.1 and WSDL 2.0 documents.

WSDLはサービスをネットワーク上の「endpoint」または「port」の集合として記述する。この目的を果たす文書の仕様としてWSDL仕様は一つのXMLXML フォーマットを提供する。「port」や「message」の抽象的な定義は、それらの具体的な仕様や実体とは分離されている。それにより、これらの定義の再利用も可能になっている。「port」とは、ネットワークアドレスを再利用可能な「binding」で対応づけることにより定義され、「port」の集団として「service」が定義される。「message」とは交換されるデータを抽象的に表現した言い方であり、「port type」とはサポートされている「operation」の抽象的な集団である。特定の「port type」のための具象的なプロトコルとデータ形式の仕様が再利用可能な「binding」を構成し、そこで「operation」と「message」が具象的なネットワークプロトコルとメッセージ形式に対応づけられる。このようにして、WSDLはウェブサービスへの公開インターフェースを記述する。

WSDLはSOAPXMLスキーマと組み合わせて、インターネット上にウェブサービスを提供するために 使われることが多い。ウェブサービスに接続するクライアント側のプログラムはWSDLファイルを読んで、そのサーバでどのような操作が可能なのかを知ることができる。利用される何らかの特殊なデータ型もWSDLファイル内にXMLスキーマの形で埋め込まれている。するとクライアントはSOAPを使ってWSDLファイル内に挙げられている操作の内の一つを実際に呼び出すことが出来る(例えばHTTP上でXMLを交換する)。

WSDLの構成要素

  • types
  • message
  • operation
  • portType
  • binding
  • port
  • service

WSDL ファイル サンプル

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.w3.org/ns/wsdl" 
             xmlns:tns="http://www.tmsws.com/wsdl20sample" 
             xmlns:whttp="http://schemas.xmlsoap.org/wsdl/http/"
             xmlns:wsoap="http://schemas.xmlsoap.org/wsdl/soap/"
             targetNamespace="http://www.tmsws.com/wsdl20sample">

<!-- Abstract type -->
   <types>
      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns="http://www.tmsws.com/wsdl20sample"
                targetNamespace="http://www.example.com/wsdl20sample">
                 
         <xs:element name="request"> ... </xs:element>
         <xs:element name="response"> ... </xs:element>
      </xs:schema>
   </types>

<!-- Abstract interfaces -->
   <interface name="Interface1">
      <fault name="Error1" element="tns:response"/>
      <operation name="Get" pattern="http://www.w3.org/ns/wsdl/in-out">
         <input messageLabel="In" element="tns:request"/>
         <output messageLabel="Out" element="tns:response"/>
      </operation>
   </interface>

<!-- Concrete Binding Over HTTP -->
   <binding name="HttpBinding" interface="tns:Interface1" 
            type="http://www.w3.org/ns/wsdl/http">
      <operation ref="tns:Get" whttp:method="GET"/>
   </binding>
   
<!-- Concrete Binding with SOAP-->
   <binding name="SoapBinding" interface="tns:Interface1" 
            type="http://www.w3.org/ns/wsdl/soap" 
            wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"
            wsoap:mepDefault="http://www.w3.org/2003/05/soap/mep/request-response">
      <operation ref="tns:Get" />
   </binding>

<!-- Web Service offering endpoints for both bindings-->
   <service name="Service1" interface="tns:Interface1">
      <endpoint name="HttpEndpoint" 
                binding="tns:HttpBinding" 
                address="http://www.example.com/rest/"/>
      <endpoint name="SoapEndpoint" 
                binding="tns:SoapBinding" 
                address="http://www.example.com/soap/"/>
   </service>
</definitions>


関連技術

外部リンク

  1. ^ WS-I Basic Profile, 5. Service Description