豊田 孝

 本日は,単純なWebサービス・プログラムを作成し,ASP .NETのテスト環境で動作を確認します。早々,本論に入りましょう。

はじめてのWebサービス・プログラミング

 前回で述べたように,クラスをWebサービスとして公開するプログラミング技法には,インラインとコードビハインドの2種類があります。今回は,インライン・プログラミング技法を採用します。コードビハインド・プログラミング技法を使ったWebサービスは,次回以降の連載で紹介する予定です。

 Visual Studio .NET(以下VS .NET)は,デフォルトではコードビハインド技法を採用していますから,今回はVS .NETを使用しません。メモ帳などのテキスト・エディタを使い,手入力でサンプル・プログラムを作成します。お時間のない方は,本ページからソース・コードをコピーしてください。

 Webサービス・プログラムを実行するには,IIS(Internet Information Server,Internet Information Services)とMicrosoft .NET Frameworkをインストールする必要があります。.NET Frameworkをインストールしていない方は,こちらからダウンロードし,インストールしておきましょう。

 それではまず,次のような準備作業を行います。

ステップ1:C:ディレクトリにITProというディレクトリを作成する
ステップ2:ITProディレクトリ内にCSディレクトリを作成する
ステップ3:ITProディレクトリ内にVBディレクトリを作成する

 この一連の準備作業が終わりましたら,テキスト・エディタを起動し,リスト1のようなコードを入力し「wsc.asmx」という名称で,CSディレクトリに保存してください。

 この小さなWebサービス・プログラムのソース・コードを使って,基本知識を整理しておきましょう。“<%”で開始される1行目は,WebService,Language,Classという3つの文字列で構成されています。前回述べたように,専門的には,WebServiceはディレクティブ,残りの2つは属性というのでしたね。また,この行には,Codebehindという属性が記述されていませんから,プログラミング技法としては,コードビハインドではなく,インライン・プログラミング技法が採用されていることも分かります。この行は,最終的に,次のようなことを宣言しています。

  • WSCSharpという名称のクラスをWebサービスとしてインターネットに公開する
  • WSCSharpクラスは,プログラミング言語Visual C# .NETで記述されている

 なお,ディレクティブは“指示”という意味を持っていますが,この指示は誰に出された指示かといえば,それはASP .NETへの指示なのです。詳しくは次回以降に説明しますが,ASP .NETはこれらの指示を受け,ソース・コードを解析し,コンパイルします。

 第2,3行目は,使用する名前空間を指定しています。ここでは,SystemとSystem.Web.Servicesという2種類の名前空間を使用することを宣言しています。System名前空間を次のように無効に(コメント・アウト)すると,Stringクラス(型)が見つからないという旨を通知するコンパイル・エラー・メッセージが返されてきます。後日試してみてください。

// using System;

 名前空間とクラスの関係については,次回以降の連載で,折に触れ説明することにします。

 4行目以降は,インターネットに公開するクラスとメソッドを定義しています。クラスとメソッドはWeb技術を使ってインターネットに一般公開されますから,それぞれの先頭に,publicを記述しています。また,公開されるメソッドの先頭には,[WebMethod]という特殊な文字列を記述します。この文字列は,専門的には,メソッド属性といい,実体はSystemWeb.Services名前空間に所属するクラスの1つです。詳しくは次回以降の連載で説明します。

 最後は公開するメソッドですが,ここでは,MyWebServiceという名前を付けています。メソッドの定義・実装内容を見ると分かるように,String型の引数を受け取り,String型の文字列を返します。返される文字列は,受け取った引数文字列と内部で用意した文字列を連結して作成します。以上でVisual C# .NETで記述したWebサービスの説明は終了です。

 ここで再度テキスト・エディタでリスト2のコードを入力し,「wsvb.asmx」という名前でVBディレクトリに保存してください。

 これはVisual Basic .NET版のWebサービスです。機能的には,すでに説明してあるVisual C# .NET版Webサービスとまったく同じですから,詳細な機能説明は割愛いたします。構文的には,Visual C# .NET版とVisual Basic .NETの間には,かなりの相違があります。Visual Basic .NETは,Visual Basic 6.0の後継の,Visual Basic 7.0という性格も持っているため,従来の構文をかなり継承していることがわかります。

 連載第2回で紹介したVisual Studio .NETの自動生成コードは,公開するクラスをデフォルトでWebServiceというクラスから継承する方針(パターン)を打ち出していました。このため,その方針に沿って,第2回と同様に2つのWebサンプル・コードを書き換えるとリスト3リスト4のようになります。

 ここで注意していただきたいのは,このクラスで使用されているWebServiceというのは,ASP .NETへの指示(ディレクティブ)ではなく,コンパイラへの指示であるということです。正式には,WebServiceは,WebServiceAttributeという名称を持つSystem.Web.Services名前空間に所属するクラスの1つです。詳しくは次回以降の連載で説明します。

Webサービスと仮想ディレクトリ

 それでは,これら2つのサンプル・プログラムを実行し,Webサービスを体験してみましょう。拡張子ASMXファイルを持つページをWebサービスとして公開(多数のユーザからのアクセスを受け付ける)ためには,作成したASMXファイルをIIS管理下のWebサイトに関連付けする必要があります。そこで,次のような作業を行います(Windows XP環境を前提にしています)。

ステップ1:「コントロールパネル」を開く
ステップ2:「管理ツール」を開く
ステップ3:「インターネットインフォーメーションサービス」を起動する
ステップ4:「Webサイト」-「既定のWebサイト」を開き,「既定のWebサイト」を右クリックする
ステップ5:「新規作成」-「仮想ディレクトリ」を選択し,「エイリアス」に"ITProwsc"と入力する
ステップ6:「ディレクトリ」画面では,"C:\ITPro\CS"と入力する

 以上でVisual C# .NETで開発したWebサービスが利用できるようになります。この作業は,ASPXファイル(サーバーサイド・コードを含むWebページ)を公開する作業と同じです。しかし,拡張子ASMXとファイル先頭に記述されているWebServiceディレクティブにより,ASP .NETは異なる動作をするわけです。ASPXファイルの先頭には,Pageというディレクティブを記述するのが一般的でしょう。つまり,ASP .NETへの指示が異なるわけです。

 それでは同じ要領で,Visual Basic .NETのWebサービスも利用できるようにしてみましょう。上のステップ1から4までを繰り返し,ステップ5(私はITProwsvbと入力)とステップ6(私はC:\ITPro\VBと入力)で入力するデータを変えるだけです。

Webサービスの動作確認

 それでは,今作成したばかりの2つのWebサービスを利用してみましょう。ブラウザを起動し,アドレス・バーに次のように入力します。

  • http://localhost/itprowsc/wsc.asmx(Visual C# .NET Webサービス呼び出し時)
  • http://localhost/itprowsvb/wsvb.asmx(Visual Basic .NET Webサービス呼び出し時)

Visual C# .NET Webサービスを呼び出した時の画面
 いずれも次のような初期画面が返されてくると思います。ここでは,Visual C# .NET Webサービスを呼び出した時の画面だけを紹介しておきます(図1[拡大表示])。

 ご覧のように,Webサービスとして公開されたクラス名(この場合,WSCSharp)が大きく表示されています。そして,このクラスがサポートしている操作(メソッド)名も表示されています。この画面が表示されれば,一応,クラスをWebサービスとして公開することには成功しています。しかし,クラスが持つメソッドが正常に動作するかどうかは,まだ安心できません。

 次回は,この画面にある「サービスの説明」と「MyWebService」という2つのリンクの意味を説明します。また,“既定の名前空間を変更してください”,などの推奨文も表示されていますから,こちらも詳しく説明します。次回からいよいよWebサービスの世界に本格的に踏み込みます。お楽しみに!

 本日はこれで失礼します。次回までごきげんよう!