2013年2月25日月曜日

Webサービスを提供するアプリケーション(サービス・プロバイダ)の作成

Webサービスとはシステム間で通信を行うため、SOAPなどのプロトコル使った通信の仕様および実装です。そしてそのインターフェイスを定義・公開するための書式がWSDL(Web Service Description Languege)です。サービス・プロバイダ(サーバー側)を作成したらWSDLも合わせて公開する事により、サービス・リクエスタ(クライアント側)がそのWSDLを解釈・実装する事よりSOAP通信が可能になります。

GeneXusでサービス・プロバイダとして公開可能なオブジェクトは、トランザクション、プロシージャ、データプロバイダの3つになります。今回は一番基本になるプロシージャオブジェクトをWebサービスとして作成・公開します。例として、ログイン認証機能を提供するWebサービス・プロバイダを作成してみましょう。




注意:あくまでもWebサービスの実装に主眼をおいているため、セキュリティに関する実装は考慮していません。

1.認証に使用するユーザートランザクションを作成します。

今回はユーザーID、パスワードを使って認証チェックを行います。その為のトランザクションです。



2.Webサービス・プロバイダ用にプロシージャオブジェクトを作成します。



3.プロシージャの呼び出しパラメータを定義します。

 インプットパラメータとして&UserId、&UserPasswordを、アウトプットパラメータとして&Result( Boolean型 )を変数定義し、Parmルールを記述します。



 Parm(in:&UserId, in:&Password, out:&Result );

4.プロシージャに認証用のロジックを定義します。




 For each
  Where UserId = &UserId
  Where Password = &Password

      &Result = True
 When none
  &Result = False
 Endfor

5.プロシージャオブジェクトのプロパティを変更します。

 ・Main program = True
 ・Call protocol = SOAP



以上で終わりです。SOAP通信するための実装としては2つのプロパティを変更するだけです。早速、ビルド・実行してみましょう。「Main program=True」のオブジェクトは右クリックのメニューから「実行」を選択することにより、直接ビルド・実行する事ができます。




直接ブラウザで実行すると以下のようになります。



表示された結果(XML)が空で上手くいったのかわかりませんね。そこでURLの末尾にパラメータとして「?wsdl」を加えて再度実行してみて下さい。



どうですか? なにやら大量のXMLが表示されていると思います。これがWSDLというSOAP通信を行う取り決めが定義されたデータです。このWSDLをサービス・リクエスタを作成する側で解析する事によりSOAP通信の実装が可能となります。

以上でサービス・プロバイダが完成です。次回はこのサービス・プロバイダを呼び出すサービス・リクエスタを実装します。


1 件のコメント: