矢沢久雄 文化オリエント アドバイザリースタッフ

●はじめに

 今回は,WindowsをベースとしたWebサービスを実現する具体的な方法を紹介しましょう。WindowsのWebサーバーであるIIS(Internet Information Service)が持つスクリプト・エンジンASP(Active Server Pages)は,.NETに対応したASP.NETとなります。ASP.NETから他のサーバーにWebサービスを提供したり,ASP.NETで動作するWebアプリケーションから他のサーバーにあるWebサービスを呼び出すことができます。今回は,C#で記述されたソース・コードを示しますが,その内容は説明しません。雰囲気だけをつかんでいただけばOKです。

図1●Webサービスの戻り値がXML形式で返される

●C#でWebサービスを作成する

 リスト1はC#で記述された,加算結果を返すWebサービス(Keisan.asmx)です。Webサービスは,クラスとして作成されます。このWebサービスは,Keisanという名前のクラスになっています。Keisanクラスには,パラメータに与えられた2つの値の加算結果を返すAddNumメソッドが定義されています。

 Webサービスは,Keisan.asmxのようにファイル名の拡張子を.asmxとして保存します。このファイルをASP.NETをインストールしたWebサーバーにコピーすれば,すぐにWebサービスが使用可能となります。WebブラウザのURL欄に「http://Webサーバー名/ディレクトリ名/Keisan.asmx/AddNum?a=123&b=456」と入力すると,パラメータに123と456が与えられてKeisanクラスのAddNumメソッドを呼び出すことができます。メソッドの戻り値は,XML形式で返されます(図1[拡大表示])。

●SOAPプロキシを使えば簡単にWebサービスを活用できる

 実際には,エンドユーザーのWebブラウザから直接Webサービスを呼び出すことはないでしょう。一般的には,Webサーバーで実行されるWebアプリケーションからWebサービスが呼び出され,その結果がWebブラウザにHTML形式で送信されることになります。そのためには,SOAPを使ってWebサービスを呼び出し,XML形式の戻り値を処理することが必要になります。

図2●SOAPプロキシがWebサービスの呼び出しを代行してくれる
 SOAPやXMLを使うためのプログラムをゼロから作成する必要はないので安心してください。.NET Framework SDKが提供しているwebserviceutil.exeというツールを使うと,Webサービスの.asmxファイルから,その中で定義されたクラスを使うためのSOAPプロキシのソース・コードを自動生成してくれます。SOAPプロキシは,Webサービスの呼び出しと戻り値の取得を行ってくれる小さなプログラムです。SOAPプロキシを使えば,異なるサーバーに配置されたWebサービスを同じマシン上にあるかのように呼び出せます。

 KeisanクラスのAddNumメソッドを呼び出すWebアプリケーションは,SOAPプロキシが提供する仮のKeisanクラスのAddNumメソッドを呼び出します。WebアプリケーションからパラメータをもらったSOAPプロキシは,SOAPを使って実際のKeisanクラスのAddNumメソッドを呼び出し,XML形式で返信された戻り値をメソッドの戻り値としてWebアプリケーションに返します(図2[拡大表示])。

 SOAPプロキシのソース・コードは,.NETに対応したマイクロソフトのプログラミング言語のソース・コードとして生成されるので,それをコンパイルして.dllファイルにします。この.dllファイルをWebサービスが格納されたディレクトリ下のbinという名前のディレクトリにコピーすれば,Webサービスを呼び出す準備は完了です。

図3●Webアプリケーションの実行結果
 リスト2は,SOAPプロキシを使ってKeisanクラスのAddNumメソッドを呼び出すWebアプリケーションです。このWebアプリケーションもC#で記述されています。Webアプリケーションは,Keisan.aspxのようにファイル名の拡張子を.aspxとして,ASP.NETがインストールされたサーバーにコピーしておきます。ソースコードを見れば,SOAPやXMLを意識することなく,Webサービスを呼び出せることが何となく分かるでしょう。このWebアプリケーションを呼び出すには,WebブラウザのURL欄に「http://Webサーバー名/ディレクトリ名/CallKeisan.asp」と入力します(図3[拡大表示])。

●WindowsアプリケーションからもWebサービスが呼び出せる

図4●Windowsアプリケーションの実行結果
 SOAPプロキシを使えば,WindowsアプリケーションからWebサービスを呼び出すこともできます。リスト3は,Webサービスとして提供されているKeisanクラスのAddNumメソッドを呼び出し,123と456の加算結果をメッセージボックスに表示するWindowsアプリケーションです。Webアプリケーションの場合と同様に,SOAPやXMLを意識することなくWebサービスを呼び出していることが何となく分かるでしょう。実行結果を図4に示します。

●おわりに

 .NETには,大きなビジネス・チャンスがあります。それは,Webサービスを商品化し,Webサービスの利用者に課金することです。世界市場に向けて一気にWebサービスを販売できるのです。.NET対応の開発ツールやサーバー製品が出揃うまでには,あと1年程度の時間がかかることでしょう。ありがたいことに準備期間があるのです。.NET Framework SDKやVisual Studio.NETのベータ1は,Windows 98/ME/NT 4.0/2000で動作します。まずは,これらの開発ツールをインストールすることからはじめてください。皆さんのご健闘をお祈り申し上げます!