WSDL チュートリアル: Web サービス Descriptイオン言語の例
WSDLとは何ですか?
ウェブサービス Descriptイオン言語 (WSDL) は、基本的に Web サービスが何を行うかをクライアント アプリケーションに伝える XML ベースのファイルです。 WSDL ファイルは、Web サービスの動作を簡潔に説明するために使用され、Web サービスに接続して Web サービスが提供するすべての機能を使用するために必要なすべての情報をクライアントに提供します。
このチュートリアルでは、Web サービスの最も重要な部分である WSDL (Web サービス記述言語) に焦点を当てます。
WSDL ファイルは、Web サービスの動作を簡潔に説明するために使用され、Web サービスに接続して Web サービスが提供するすべての機能を使用するために必要なすべての情報をクライアントに提供します。
WSDLドキュメントの構造
WSDL ドキュメントは、Web サービスを記述するために使用されます。 この説明は、クライアント アプリケーションが Web サービスが実際に何を行うのかを理解できるようにするために必要です。
- WSDL ファイルには、Web サービスの場所と
- Web サービスによって公開されるメソッド。
WSDL ファイル自体は、どのユーザーにとっても非常に複雑に見えるかもしれませんが、関連する Web サービスを使用するためにクライアント アプリケーションが必要とするすべての情報が含まれています。
以下は WSDL ファイルの一般的な構造です。
- 定義
- Target名前空間
- データ型
- メッセージ
- ポートタイプ
- バインディング
- サービス
ここで注意すべき重要な点の XNUMX つは、メッセージの定義です。これは、 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ファイルには以下の主要部分が含まれています。
- この タグは、クライアント アプリケーションと Web サービス間で交換されるメッセージで使用されるすべての複雑なデータ型を定義するために使用されます。これはクライアント アプリケーションの重要な側面です。Web サービスが複雑なデータ型で動作する場合、クライアント アプリケーションは複雑なデータ型を処理する方法を知っている必要があるためです。浮動小数点、数値、文字列などのデータ型はすべて単純なデータ型ですが、Web サービスによって提供される構造化データ型が存在する可能性があります。
たとえば、EmployeeDataType というデータ型があり、このデータ型には、文字列型の「EmployeeName」と数値または整数型の「EmployeeID」という 2 つの要素があります。これらが組み合わさってデータ構造が形成され、それが複合データ型になります。 - この タグは、クライアント アプリケーションと Web サーバーの間で交換されるメッセージを定義するために使用されます。これらのメッセージは、Web サービスによって実行できる入力および出力操作を説明します。メッセージの例としては、従業員の EmployeeID を受け入れるメッセージがあり、出力メッセージは、提供された EmpoyeeID に基づく従業員の名前になります。
- この タグは、すべての入力メッセージと出力メッセージを 1 つの論理操作にカプセル化するために使用されます。したがって、クライアント アプリケーションから EmployeeID を受け取り、EmployeeName を出力メッセージとして送信する入力メッセージを組み合わせた「GetEmployee」という操作が存在する可能性があります。
- この タグは、操作を特定のポート タイプにバインドするために使用されます。これにより、クライアント アプリケーションが関連するポート タイプを呼び出すときに、このポート タイプにバインドされている操作にアクセスできるようになります。ポート タイプはインターフェイスに似ています。したがって、クライアント アプリケーションが Web サービスを使用する必要がある場合は、バインド情報を使用して、その Web サービスによって提供されるインターフェイスに接続できるようにする必要があります。
- この tag は Web サービス自体に付けられた名前です。 最初に、クライアント アプリケーションが Web サービスを呼び出すときは、Web サービスの名前を呼び出すことによって行われます。 たとえば、Web サービスは次のようなアドレスに配置できます。 http://localhost/Guru99/Tutorial.asmx 。 サービスタグには実際には次のように定義された URL が含まれます。 http://localhost/Guru99/Tutorial.asmxこれは実際に、この場所に利用可能な 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ファイルを理解できます。同様に、クライアントアプリケーションが.Netで書かれていれば、 Java プログラミング言語であれば、WSDL ファイルも解釈できるようになります。
WSDL ファイルは、すべてを結合するものです。 上の図から、.Net 言語で Web サービスを作成できることがわかります。
ここでサービスが実装されます。WSDLファイルがなく、 Java Web サービスを利用するためのクラスを作成する場合、これを実現するには多くのコーディング作業が必要になります。
しかし、今ではXML形式のWSDLファイルがあり、どのプログラミング言語でも理解できるので、 Java クラスは .Net Web サービスを利用します。そのため、コーディングの労力は大幅に削減されます。
WSDLメッセージ部
WSDL は、「メッセージ」と呼ばれるセクションで構成されます。 要素。
この要素は基本的に、Web サービスとクライアント アプリケーションの間で交換されるデータを記述するために使用されます。
各 Web サービスには常に 2 種類のメッセージがあります。
- XNUMX つは Web サービスの入力用で、もう XNUMX つは Web サービスの出力用です。
- 入力は、Web サービスによって受け入れられるパラメーターを記述するために使用されます。 これはクライアント アプリケーションの重要な側面であり、Web サービスにパラメータとして送信される値をクライアント アプリケーションが認識します。
- もう XNUMX つのタイプのメッセージは、Web サービスによってどのような結果が提供されるかを示す出力メッセージです。
各メッセージには順番に、 入出力メッセージで使用されるパラメータを記述するために使用される要素。
以下は、Web サービスのメッセージがどのようなものかを示す簡単な例です。 Web サービスの機能は、「チュートリアル ID」がパラメーターとして Web サービスに送信されると、「チュートリアル」の名前を提供することです。
- ご覧のとおり、Web サービスには 2 つのメッセージがあり、XNUMX つは入力用、もう XNUMX つは出力用です。
- 入力メッセージは TutorialNameRequest と呼ばれ、TutorialID と呼ばれる XNUMX つのパラメータを持ちます。 このパラメータは、xsd:number タイプで指定されるタイプの数値です。
- 出力メッセージは TutorialNameResponse と呼ばれ、TutorialName という XNUMX つのパラメータを持ちます。 このパラメータは、xsd:string タイプで指定される文字列タイプです。
ポートタイプのバインド
ポートは、Web サービスによって提供される 1 つの完全な操作を定義するために WSDL で使用されます。
前のトピックでは、Web サービスが 2 つのメッセージを提供していることを説明しました。XNUMX つは「TutorialNameRequest」と呼ばれる入力用で、もう XNUMX つは「TutorialNameResponse」と呼ばれる出力用です。入力メッセージ フォームと出力メッセージ フォームを合わせると、XNUMX つの完全な操作と呼ばれます。
WSDL には という要素が用意されています。 Web サービスによって提供される操作を定義するために使用されます。
したがって、上記の例では次のことがわかります。
- 操作をカプセル化するポート タイプの名前は「Tutorial_PortType」として指定されます。
- 操作自体には「Tutorial」という名前が付けられます。つまり、TutorialID が入力パラメータとして指定されている場合、この操作は基本的に TutorialName を提供します。
- 次は2つのメッセージです。XNUMXつは入力用、もうXNUMXつは操作を形成する出力用です。
に加え という要素もあります。 メッセージの転送方法を定義するために使用される要素。
- 上記の例では、バインディングがバインディング名で構成されており、この場合は「TutorialSoapBinding」と指定されています。簡単に言えば、バインディングとは、クライアント アプリケーションが Web サービスに実際にバインドするために使用する情報です。Web サービスに実際にバインドされると、Web サービスによって公開されるさまざまな操作を呼び出すことができます。
- トランスポート層は http:// として指定されます。これは、メッセージが HTTP プロトコルを介して転送されることを意味します。
WSDLファイルの作成
WSDL ファイルは、Web サービスがプログラミング言語で構築されるたびに作成されます。
WSDLファイルは最初から生成するにはかなり複雑なので、Visual Studio for .Netや Eclipse for 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 サービスを公開し、それを利用する方法の例を見てみましょう。
この例では、XNUMX つの WebMethod を使用して Web サービスを作成します。 このメソッドは、「TutorialID」という整数パラメータを受け入れます。 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 TutoriallD) { string TutorialName = "Web Services"; return TutorialName; } } }
コードの説明:
- ここでは「Guru99WebService」という WebMethod を作成しています。 この Web メソッドには、この Web メソッドが呼び出されるたびに渡す必要がある整数パラメータが含まれています。
- 次に、「Web Services」の文字列値を保持する「TutorialName」という変数を定義します。 これは、Web サービスが呼び出されたときに返される値です。
ステップ2) Web サービス ファイルを定義したら、次のステップは、この Web サービスを使用するクライアント プロジェクトを作成することです。
この Web サービスを呼び出し、「Guru99WebService」を呼び出して、コンソール ログ画面に Web メソッドの出力を表示する単純なコンソール アプリケーションを作成しましょう。 コンソール アプリケーションを作成するには、次の手順に従います。
Visual Studioソリューションファイルを右クリックし、[追加]->[新しいプロジェクト]オプションを選択します。
ステップ3) このステップでは、
- 最初にビジュアルを選択してください C# Windows オプション。次に、コンソール アプリケーションを作成するオプションを選択します。
- プロジェクトに名前を付けます。この例では「DemoApplication」とします。
上記の画面で [OK] ボタンをクリックすると、Visual Studio のソリューション エクスプローラーにプロジェクトが表示されます。
ステップ4) この手順では、DemoApplication コンソール アプリケーションをスタートアップ プロジェクトとして設定します。これは、Visual Studio プロジェクト全体が実行されるときに、このアプリケーションが最初に起動されるようにするためです。次に、このコンソール アプリケーションは、Visual Studio によって自動的に起動される Web サービスを呼び出します。
このステップを完了するには、DemoApplication プロジェクトを右クリックし、「スタートアップ プロジェクトとして設定」オプションを選択します。
ステップ5) 次のステップは、「Guru99Webservice」のサービス参照をコンソール アプリケーションに追加することです。 これは、DemoApplication が Web サービスと Web サービス内のすべての Web メソッドを参照できるようにするために行われます。
これを行うには、DemoApplication プロジェクト ファイルを右クリックし、メニュー オプションの [追加] -> [サービス参照] を選択します。
ステップ6) このステップでは、サービス参照を追加するために必要なさまざまな値を提供します。
- まず、検出オプションを選択する必要があります。 このオプションは、TutorialService Web サービスの WSDL ファイルを自動的に選択します。
- 次に、サービス参照に名前を付ける必要があります。 この例では、Guru99Webservice という名前を付けています。
- 次に、右側に 'GetTutorialService' メソッドが表示されるように、TutorialService.asmx オプションを展開する必要があります。ここで、TutorialService.asmx は、Web サービスのコードを含む Visual Studio .Net ファイルの名前です。
- 次に、「GetTutorialService」として知られる Web サービスにある Web メソッドを確認します。
「OK」ボタンをクリックすると、以下に示すように、この Web サービスにアクセスするために必要なコードがすべて DemoApplication Console アプリケーションに追加されます。
スクリーンショットは、「Guru99Webservice」がコンソール アプリケーションに正常に追加されたことを示しています。
ステップ7) 次のステップでは、Web サービスの Web メソッドにアクセスするコードをコンソール アプリケーションに追加します。 コンソール アプリケーションに自動的に付属する Program.cs コード ファイルを開き、以下のコードを追加します。
namespace DemoApplication { class Program { static void Main(string[ ] args) { var client = new Guru99Webservice.Guru99WebserviceSoapClient(); Console.WriteLine(client.GetTutorialService(l)); Console.ReadKey(); } } }
コードの説明:-
- 最初の部分は Program.cs ファイルを選択することです。これは、コンソール アプリケーションの作成時に Visual Studio によって作成されるメイン ファイルです。このファイルは、コンソール アプリケーション (この場合はデモ アプリケーション) の実行時に実行されます。
- 次に、「client」という変数を作成します。この変数は、前の手順で作成した Service 参照のインスタンスに設定されます。 この場合、サービス参照は「Guru99Webservice.Guru99WebserviveSoapClient()」です。
- 次に、TutorialService Web サービスで Web メソッド 'GetTutorialService' を呼び出します。GetTutorialService' メソッドは整数パラメータを受け入れるため、整数パラメータを Web メソッドに渡しているだけであることに注意してください。
- この最後の行は、出力を表示できるようにコンソール ログ画面がアクティブなままであることを確認するためのものです。 このコマンドは、ユーザーからの入力を待つだけです。
出力
上記の手順をすべて実行し、DemoApplication を実行すると、以下の出力が表示されます。
出力から、DemoApplication が Web サービスを呼び出し、Web サービスによって返された文字列がコンソール ログに表示されていることが明確にわかります。
まとめ
- WSDLの完全な形式はWeb Servicesです。 Descriptイオン言語
- WSDL ドキュメントは、Web サービスを記述するために使用されるドキュメントです。 これは、クライアント アプリケーションが Web サービスの場所を知るための鍵となります。 また、クライアント アプリケーションが Web サービスで利用可能なメソッドを理解できるようになります。
- WSDL ファイルを使用すると、Web サービスを XNUMX つのプログラミング言語で実装し、別のプログラミング言語から呼び出すことが非常に簡単になります。
- WSDL ドキュメントは通常、メッセージで構成されます。各 Web メソッドには 2 つのメッセージがあり、XNUMX つは入力用、もう XNUMX つは出力用です。これらが組み合わさって操作を形成します。
- ウェブサービス Description Language (WSDL の略) ファイルは通常、対応するプログラミング言語で使用されるエディターで作成されます。
- Visual Studio で Web サービスを使用する方法を見てきました。これは、コンソール アプリケーションである別のプロジェクトを作成することで実行できます。次に、サービス参照を追加することで、Web サービス内の Web メソッドにアクセスできるようになります。