WSDLとは?意味と例

⚡ スマートサマリー

WSDL (Webサービス DescriptWSDL(Webサービス定義言語)は、Webサービスの動作と呼び出し方法をクライアントアプリケーションに伝えるXMLベースのファイルです。この資料では、WSDLの構造、要素、メッセージ、ポートタイプ、バインディング、および公開例について説明します。

  • 📄 コア定義: WSDLは、Webサービスの場所、動作、および受け入れるメッセージと返すメッセージを記述するXMLファイルです。
  • 🏗️ 文書構造: WSDLドキュメントは、定義ルートに包まれた型、メッセージ、ポートタイプ、バインディング、およびサービス要素で構成されています。
  • 🔤 重要な要素: types要素はデータ型を定義し、message要素は交換されるデータを定義し、portType要素は操作をグループ化し、binding要素はそれらをプロトコルにマッピングします。
  • ✉️ メッセージとポート: 各Webメソッドは、入力メッセージと出力メッセージを使用し、これらが組み合わさってポートタイプを通じて公開される1つの操作を構成します。
  • 🛠️ 自動生成: Visual Studioなどのエディターと Eclipse クライアントアプリケーションがサービスを呼び出す際に使用するWSDLファイルを自動的に生成します。

WSDLとは何ですか?

WSDLとは何ですか?

ウェブサービス Descriptイオン言語 (WSDL) は、基本的に Web サービスが何を行うかをクライアント アプリケーションに伝える XML ベースのファイルです。 WSDL ファイルは、Web サービスの動作を簡潔に説明するために使用され、Web サービスに接続して Web サービスが提供するすべての機能を使用するために必要なすべての情報をクライアントに提供します。

このチュートリアルでは、Webサービスの最も重要な部分であるWSDL(Webサービス定義ファイル)に焦点を当てます。 Descriptイオン言語。それは接続として機能しますtracウェブサービスと、それを利用したいクライアントとの間のt。

WSDLドキュメントの構造

WSDLドキュメントは、Webサービスを記述するために使用されます。この記述は、クライアントアプリケーションがWebサービスの実際の動作を理解するために必要です。

  • WSDL ファイルには Web サービスの場所が含まれており、
  • Web サービスによって公開されるメソッド。

WSDLファイル自体は、ユーザーにとっては非常に複雑に見えるかもしれませんが、関連するWebサービスを利用するためにクライアントアプリケーションが必要とするすべての情報が含まれています。以下に、WSDLファイルの一般的な構造を示します。

  • Target名前空間
  • データ型
  • メッセージ
  • ポートタイプ
  • バインディング
  • サービス

ここで注目すべき重要な点は、メッセージの定義、つまり、 SOAPプロトコルは、実際にはWSDLドキュメントで定義されています。WSDLドキュメントは、Webサービスが送受信するSOAPメッセージの種類をクライアントアプリケーションに伝えます。

言い換えれば、WSDLは特定の場所の住所が記載されたハガキのようなものです。住所は、メッセージをどこに届けるべきかという詳細情報を提供します。同様に、WSDLファイルは、クライアントが求めるすべての機能を提供できるWebサービスの住所が記載されたハガキのようなものです。

<!-- WSDL definition structure -->
<definitions
      name="Guru99Service"
      targetNamespace=http://example.org/math/
      xmlns=http://schemas.xmlsoap.org/wsdl/>
   <!-- abstract definitions -->
      <types> ...
      <message> ...
      <portType> ...

   <!-- concrete definitions -->
      <binding> ...
      <service> ...
</definition>

以下に、WSDLファイルの構造図を示します。

WSDLドキュメントの構造

WSDLの構造

WSDL要素

WSDLファイルには、以下の主要な部分が含まれています。

  1. その タグは、クライアント アプリケーションと Web サービス間で交換されるメッセージで使用されるすべての複雑なデータ型を定義するために使用されます。Web サービスが複雑なデータ型を扱う場合、クライアント アプリケーションはその処理方法を知っている必要があるため、これは重要です。浮動小数点数、数値、文字列などのデータ型はすべて単純なデータ型ですが、Web サービスによって構造化されたデータ型が提供される場合があります。たとえば、EmployeeDataType というデータ型があり、文字列型の「EmployeeName」と数値または整数型の「EmployeeID」という 2 つの要素を持つことができます。これらが組み合わさって複雑なデータ型を形成します。
  2. その タグは、クライアントアプリケーションとWebサーバー間でやり取りされるメッセージを定義するために使用されます。これらのメッセージは、Webサービスが実行できる入出力操作を説明します。メッセージの例としては、従業員の従業員IDを受け取り、その従業員IDに基づいて従業員の名前を出力するメッセージが挙げられます。
  3. その タグは、すべての入力メッセージと出力メッセージを 1 つの論理操作にカプセル化するために使用されます。したがって、クライアント アプリケーションから EmployeeID を受け取り、EmployeeName を出力メッセージとして送信する入力メッセージを組み合わせた「GetEmployee」という操作が存在する可能性があります。
  4. その タグは、操作を特定のポートタイプにバインドするために使用されます。これにより、クライアントアプリケーションが該当するポートタイプを呼び出す際に、そのポートタイプにバインドされた操作にアクセスできるようになります。ポートタイプはインターフェースのようなものです。そのため、クライアントアプリケーションがWebサービスを使用する必要がある場合は、バインディング情報を使用して、そのWebサービスが提供するインターフェースに接続できるようにする必要があります。
  5. その タグは、Webサービス自体に付けられた名前です。クライアントアプリケーションが最初にWebサービスを呼び出すときは、Webサービスの名前を使って呼び出します。たとえば、Webサービスはhttp://localhost/のようなアドレスに配置されます。Guru99/Tutorial.asmx。サービスタグには URL 定義されており、クライアントアプリケーションに対して、この場所でWebサービスが利用可能であることを通知します。

WSDL を使用する理由

Webサービスは、現代のWebアプリケーションを構築する上で重要なコンポーネントです。その主な目的は、さまざまなプログラミング言語で構築された複数のアプリケーションが相互に通信できるようにすることです。たとえば、.Net Webアプリケーションが、 Java Webサービス経由でのお申し込みとなります。

ウェブサービスには、以下の主要な特徴があります。

  • XMLプログラミング言語を使用して構築されています。.Netや Java XML を操作できる対応するコマンドがあります。そのため、XML は Web サービスの構築に最も適した言語として採用されました。
  • WebサービスはHTTPを介して通信します。HTTPはすべてのWebアプリケーションで使用されるプロトコルです。したがって、WebサービスもHTTPプロトコル上で動作できるようにすることは理にかなっています。
  • Web サービスは特定の言語仕様に準拠しています。 この仕様は、すべての Web 標準の管理団体である W3C によって設定されています。
  • Web サービスには、Web サービスを記述するために使用される WSDL と呼ばれる記述言語があります。

WSDL ファイルは、プレーンな XML で記述されています。XML で記述されている理由は、どのプログラミング言語でもファイルを読み取れるようにするためです。したがって、クライアント アプリケーションが .Net で記述されている場合、XML ファイルを理解できます。同様に、クライアント アプリケーションが Java プログラミング言語であれば、WSDLファイルも解釈できるようになるだろう。

WSDLの必要性

WSDL ファイルは、すべてを結合するものです。上記の図から、.Net 言語で Web サービスを作成できることがわかります。つまり、ここでサービスが実装されます。WSDL ファイルがなく、 Java Web サービスを利用するクラスを作成する場合、これを実現するには多くのコーディング作業が必要になります。しかし、XML で記述され、どのプログラミング言語でも理解できる WSDL ファイルを使用すれば、簡単に Java クラスは .Net Web サービスを利用します。そのため、コーディングの労力は大幅に削減されます。

WSDLメッセージ部

WSDL は、「メッセージ」と呼ばれるセクションで構成されます。 要素。この要素は基本的に、Webサービスとクライアントアプリケーション間で交換されるデータを記述するために使用されます。

各ウェブサービスには常に2種類のメッセージが存在します。

  • XNUMX つは Web サービスの入力用で、もう XNUMX つは Web サービスの出力用です。
  • 入力は、Web サービスによって受け入れられるパラメーターを記述するために使用されます。 これはクライアント アプリケーションの重要な側面であり、Web サービスにパラメータとして送信される値をクライアント アプリケーションが認識します。
  • もう XNUMX つのタイプのメッセージは、Web サービスによってどのような結果が提供されるかを示す出力メッセージです。

各メッセージには順番に、 入出力メッセージで使用されるパラメータを記述するために使用される要素。

以下は、Webサービスへのメッセージの簡単な例です。このWebサービスの機能は、「チュートリアルID」がパラメータとしてWebサービスに送信されると、「チュートリアル」の名前を返すことです。

WSDLメッセージ部

  1. ご覧のとおり、このウェブサービスには入力用と出力用の2つのメッセージがあります。
  2. 入力メッセージは TutorialNameRequest と呼ばれ、TutorialID というパラメータが 1 つ含まれています。このパラメータは数値型であり、xsd:number 型で指定されます。
  3. 出力メッセージは TutorialNameResponse と呼ばれ、TutorialName というパラメータが 1 つ含まれています。このパラメータは文字列型であり、xsd:string 型で指定されます。

ポートタイプのバインド

WSDLでは、ポートを使用してWebサービスが提供する完全な操作を定義します。前のトピックでは、Webサービスが「TutorialNameRequest」という入力メッセージと「TutorialNameResponse」という出力メッセージの2つのメッセージを提供していることを確認しました。入力メッセージと出力メッセージは合わせて、完全な操作として認識されます。

WSDL には という要素が用意されています。 Web サービスによって提供される操作を定義するために使用されます。

ポートタイプバインディング portType

したがって、上記の例では次のことがわかります。

  1. 操作をカプセル化するポートタイプの名前は「Tutorial_PortType」と指定されます。
  2. この操作自体には「チュートリアル」という名前が付けられています。つまり、入力パラメータとしてチュートリアルIDが指定された場合、この操作は基本的にチュートリアル名を返します。
  3. 次に、入力用と出力用の2つのメッセージがあり、これらが私たちの操作を構成します。

に加え という要素もあります。 メッセージの転送方法を定義するために使用される要素。

ポートタイプバインディングバインディング

  1. 上記の例では、バインディングはバインディング名で構成されており、この例では「TutorialSoapBinding」という名前が付けられています。簡単に言うと、バインディングとは、クライアントアプリケーションがWebサービスに自身をバインドするために使用する情報のことです。Webサービスにバインドされると、Webサービスが公開しているさまざまな操作を呼び出すことができるようになります。
  2. トランスポート層は http:// と表記されており、これはメッセージが HTTP プロトコルを介して転送されることを意味します。

WSDLファイルの作成

WSDL ファイルは、Web サービスがどのプログラミング言語で構築されても作成されます。WSDL ファイルは、ゼロから生成するには非常に複雑なため、Visual Studio for .Net や Eclipse の Java WSDL ファイルを自動的に作成します。

以下は、Visual Studio で作成された WSDL ファイルの例です。

<?xml version="1.0"?>
<definitions name="Tutorial"
      targetNamespace=http://Guru99.com/Tutorial.wsdl
      xmlns:tns=http://Guru99.com/Tutorial.wsdl
      xmlns:xsd1=http://Guru99.com/Tutorial.xsd
      xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/
      xmlns="http://schemas.xmlsoap.org/wsdl/">
   <types>
      <schema targetNamespace=http://Guru99.com/Tutorial.xsd
         xmlns="http://www.w3.org/2000/10/XMLSchema">
         <element name="TutorialNameRequest">
            <complexType>
               <all>
                  <element name="TutorialName" type="string"/>
               </all>
            </complexType>
         </element>
         <element name="TutorialIDRequest">
            <complexType>
               <all>
                  <element name="TutorialID" type="number"/>
               </all>
            </complexType>
         </element>
      </schema>
   </types>
   <message name="GetTutorialNameInput">
      <part name="body" element="xsd1:TutorialIDRequest"/>
   </message>
   <message name="GetTutorialNameOutput">
      <part name="body" element="xsd1:TutorialNameRequest"/>
   </message>
   <portType name="TutorialPortType">
      <operation name="GetTutorialName">
         <input message="tns:GetTutorialNameInput"/>
         <output message="tns:GetTutorialNameOutput"/>
      </operation>
   </portType>
   <binding name="TutorialSoapBinding" type="tns:TutorialPortType">
      <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
      <operation name="GetTutorialName">
         <soap:operation soapAction="http://Guru99.com/GetTutorialName"/>
         <input>
            <soap:body use="literal"/>
         </input>
         <output>
            <soap:body use="literal"/>
         </output>
      </operation>
   </binding>
   <service name="TutorialService">
      <documentation>TutorialService</documentation>
      <port name="TutorialPort" binding="tns:TutorialSoapBinding">
         <soap:address location="http://Guru99.com/Tutorial"/>
      </port>
   </service>
</definitions>

上記のWSDLファイルは、ユーザーにとって非常に難解に見えるかもしれません。今後のチュートリアルでは各部分を詳しく解説しますが、ここではまず、WSDLファイルの各セクションが実際にどのような役割を果たしているのかを簡単に見ていきましょう。

Web サービスのサンプルの公開

それでは、Visual Studio を使用して Web サービスを公開し、利用する方法の例を見てみましょう。この例では、1 つの Web メソッドを持つ Web サービスを作成します。このメソッドは、「TutorialID」という名前の Integer 型のパラメーターを受け取ります。そして、Web メソッドは「Web Services」という名前の文字列を返します。

次に、このWebサービスを利用し、それに応じてWebメソッドを呼び出すコンソールベースのアプリケーションを作成します。この例を実行するために必要な手順を見ていきましょう。

ステップ1) 最初のステップは、Web サービスを作成することです。 詳しい手順は、 Asp.Net ウェブプロジェクトとウェブサービスの作成について説明しました。 こちらプロジェクトとWebサービスを作成するには、同様の手順に従ってください。重要なのは、Webサービスファイルに以下のコードを入力することです。

Webサービスの公開例 Webサービスコード

namespace webservic_asmx
{
   [WebService(Name = "Guru99 Web service")]
   public class TutorialService : System.Web.Services.WebService
   {
      [WebMethod]
      public string GetTutorialService(int TutorialID)
      {
         string TutorialName = "Web Services";
         return TutorialName;
      }
   }
}

Code 説明:

  1. ここでは、Webメソッドを作成します。Guru99WebService。このウェブメソッドでは、このウェブメソッドが呼び出されるたびに渡す必要がある整数パラメータを含めています。
  2. 次に、「Web Services」の文字列値を保持する「TutorialName」という変数を定義します。 これは、Web サービスが呼び出されたときに返される値です。

ステップ2) ウェブサービスファイルを定義したら、次のステップはこのウェブサービスを利用するクライアントプロジェクトを作成することです。このウェブサービスを呼び出し、「Guru99WebService」と入力し、Web メソッドの出力をコンソール ログ画面に表示します。コンソール アプリケーションを作成するには、以下の手順に従ってください。Visual Studio ソリューション ファイルを右クリックし、[追加] -> [新しいプロジェクト] を選択します。

Webサービスの例を公開する新しいプロジェクトを追加する

ステップ3) このステップでは、

  1. 最初にビジュアルを選択してください C# Windows オプション。次に、コンソール アプリケーションを作成するオプションを選択します。
  2. プロジェクトに名前を付けます。この例では「DemoApplication」とします。

Webサービスの例コンソールアプリケーションの公開

上記の画面で「OK」ボタンをクリックすると、Visual Studio のソリューションエクスプローラーにプロジェクトが表示されます。

Web サービスの例を公開するソリューションエクスプローラー

ステップ4) この手順では、DemoApplication Console アプリケーションをスタートアップ プロジェクトとして設定します。これは、Visual Studio プロジェクト全体を実行する際に、このアプリケーションが最初に起動されるようにするためです。この Console アプリケーションは、Visual Studio によって自動的に起動される Web サービスを呼び出します。この手順を完了するには、DemoApplication プロジェクトを右クリックし、「スタートアップ プロジェクトとして設定」を選択します。

Webサービスサンプルセットをスタートアッププロジェクトとして公開する

ステップ5) 次のステップは、当社のサービス参照を追加することです。Guruコンソールアプリケーションに「99Webservice」を追加します。これは、DemoApplication が Web サービスと Web サービス内のすべての Web メソッドを参照できるようにするためです。これを行うには、DemoApplication プロジェクト ファイルを右クリックし、メニュー オプション「追加」→「サービス参照」を選択します。

Webサービスの例を公開してサービス参照を追加する

ステップ6) このステップでは、サービス参照を追加するために必要なさまざまな値を指定します。

  1. まず、検出オプションを選択する必要があります。このオプションを選択すると、TutorialService WebサービスのWSDLファイルが自動的に取得されます。
  2. 次に、サービス参照に名前を付ける必要があります。この例では、 Guru99Webサービス。
  3. 次に、TutorialService.asmx オプションを展開して、右側に「GetTutorialService」メソッドが表示されるようにします。ここで、TutorialService.asmx は、Web サービスのコードを含む Visual Studio .NET ファイルの名前です。
  4. 次に、ウェブサービスに用意した「GetTutorialService」というウェブメソッドを見ていきましょう。

Webサービスの例のサービス参照値の公開

「OK」ボタンをクリックすると、この Web サービスにアクセスするために必要なすべてのコードが、以下に示すように DemoApplication Console アプリケーションに追加されます。スクリーンショットには、「Guru「99Webservice」がコンソールアプリケーションに正常に追加されました。

Webサービスの例を公開するサービスが追加されました

ステップ7) 次のステップは、Webサービス内のWebメソッドにアクセスするためのコードをコンソールアプリケーションに追加することです。コンソールアプリケーションに自動的に付属するProgram.csコードファイルを開き、以下のコードを追加してください。

Webサービスサンプルプログラム.csコードの公開

namespace DemoApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         var client = new Guru99Webservice.Guru99WebserviceSoapClient();

         Console.WriteLine(client.GetTutorialService(1));

         Console.ReadKey();
      }
   }
}

Code 説明:

  1. まず最初に、Program.cs ファイルを選択します。これは、コンソール アプリケーションを作成する際に Visual Studio によって作成されるメイン ファイルです。このファイルは、コンソール アプリケーション (この場合は DemoApplication) が実行されたときに実行されるものです。
  2. 次に、「client」という変数を作成します。この変数には、前のステップで作成したサービス参照のインスタンスを設定します。この場合、サービス参照は「Guru99Webサービス。Guru99WebserviceSoapClient()'。
  3. 次に、TutorialService Webサービス内のWebメソッド「GetTutorialService」を呼び出します。GetTutorialServiceメソッドは整数型のパラメータを受け取るので、Webメソッドには整数型のパラメータを渡します。
  4. この最後の行は、コンソールログ画面がアクティブな状態を維持し、出力内容を確認できるようにするためのものです。このコマンドは、ユーザーからの入力を待ちます。

出力

上記の手順をすべて実行し、デモアプリケーションを実行すると、以下の出力が表示されます。

Webサービスの例の出力を公開する

出力から、DemoApplication が Web サービスを呼び出し、Web サービスによって返された文字列がコンソール ログに表示されていることが明確にわかります。

よくあるご質問

AI は複雑な WSDL を読み取り、その操作を平易な言葉で説明し、サンプル要求を生成し、コンテキスト間の不一致を指摘することができます。tract と実装。これにより、馴染みのない、またはレガシーな SOAP Web サービスとの統合が迅速化されます。

はい。AIアシスタントはWSDL定義をクライアントスタブ、データモデル、C#などの言語でのサンプル呼び出しに変換できます。 Javaまたは Python開発者は、生成されたコードについて、名前空間とエラー処理が正しいかどうかを確認する必要があります。

SOAPは、実際のXMLリクエストとレスポンスを伝送するメッセージングプロトコルです。WSDLは、SOAP Webサービスが提供する操作とその呼び出し方法をクライアントに伝える記述ファイルです。これらは併用されます。

はい。WSDLは、正式な定義が必要な企業、銀行、政府システムにおけるSOAP Webサービスの標準規格であり続けています。tracts。新しいREST APIは通常OpenAPI(Swagger)を使用しますが、多くのレガシー統合は依然としてWSDLに依存しています。