特集
NetDictionaryで始める
Webサービス・プログラミング

1.Webサービスを記述するasmxファイル

デジタルアドバンテージ
2001/12/05


 Webサービスのプログラムは、拡張子.asmxを持つ「asmxファイル」に記述する。そして作成したWebサービスを外部からアクセスできるようにするためには、このファイルをWebサーバであるIISを介して公開できるように配置する。具体的には「\Inetpub\wwwroot」ディレクトリ(IISをインストールすれば自動的に作成されるディレクトリ)以下にこのファイルを配置するか、asmxファイルのあるディレクトリをIISの仮想ディレクトリとして設定すればよい。

 さて、次のプログラムは現在の時刻を文字列として返すWebサービスのサンプルだ。

 1: <%@ WebService Language="c#" Class="WhatsTimeClass" %>
 2:
 3: using System;
 4: using System.Web.Services;
 5:
 6: public class WhatsTimeClass: WebService {
 7:   [WebMethod]
 8:   public string WhatsTime() {
 9:     return DateTime.Now.TimeOfDay.ToString();
10:   }
11: }
whatstime.asmx
asmxファイルに記述したWebサービス。現在の時刻を文字列として返す。

 このファイル(ファイル名は「whatstime.asmx」)をIISのディレクトリ(例えば「\Inetpub\wwwroot」)にコピーするだけで、1つのWebサービスとなる。次の画面はこのasmxファイルをブラウザで開いたときに表示される参照用ページである(アドレスは「http://localhost/whatstime.asmx」となる)。

Webサービスの参照用ページ
このページより、ブラウザを介してWebサービスをテストすることができる。

 この参照用ページによるWebサービスへのアクセスについては、前回の「第2回:Visual Studio .NETで作るWebサービス・クライアント」で詳しく解説しているので参照されたい。

 whatstimeプログラムの内容を解説しよう。まず、asmxファイルの最初の行は必ず「@ WebServiceディレクティブ(directive:「指示」の意)」を記述する必要がある。この行は“<% 〜 %>”のブロックで囲まなければならない(この“%”のついた特別なタグは、Webアプリケーションを記述する際、ASP .NETに対してコードの実行を指示する場合に使用するものと同じである。このタグ自体は、従来のASPでも使用していた)。

1: <%@ WebService Language="c#" Class="WhatsTimeClass" %>

 この「@ WebServiceディレクティブ」では、少なくとも“Language”と“Class”の2つの属性と、その属性に対する値を指定する必要がある。このうち「Language属性」では、そのasmxファイルでWebサービスを記述するために使用しているプログラム言語を、一方の「Class属性」ではWebサービスのメソッドを含むクラスをそれぞれ指定する。

 Class属性で指定している「WhatsTimeClassクラス」は、2行目以降にC#言語を使用して記述している。1行目の「@ WebMethodディレクティブ」以外の部分は完全にC#のソース・コードとなっているのが分かるだろう。

 WhatsTimeClassクラスでは「WhatsTimeメソッド」を定義しており、メソッドの直前に“[WebMethod]”というキーワードを指定している(このキーワードの正体については後述)。このキーワードが付けられたメソッドがWebサービスとして公開される(プログラムとしても、このメソッドを“public”として指定する必要がある)。

 6: public class WhatsTimeClass: WebService {
 7:   [WebMethod]
 8:   public string WhatsTime() {
 9:     return DateTime.Now.TimeOfDay.ToString();
10: }

 ここではメソッドを1つだけ定義しているが、もちろん複数のメソッドを定義し、複数のメソッドに[WebMethod]を指定して公開することができる。asmxファイルでは、Class属性で指定されたクラスにあるメソッドのうち、[WebMethod]が付けられたメソッドがWebサービスのメソッドとして公開される。

 Webサービスを公開した後、このWebサービスが最初にアクセスされたときに、Language属性で指定した言語のコンパイラによってコードが自動的にコンパイルされ、実行されて、メソッドの戻り値がWebサービスの結果として返される。なお、2度目以降のアクセスでは、テンポラリ・ディレクトリに保存されたコンパイル済みのコードが使用される。


 INDEX
  [特集]NetDictionaryで始めるWebサービス・プログラミング
  第3回 Webサービス・プログラミング始めの一歩
  1.Webサービスを記述するasmxファイル
    2.Codebehindによるコードの分離
    3.[WebMethod]アトリビュートの機能
    4.[WebService]アトリビュートの追加
    5.WebServiceクラスの継承
 
 特集 : NetDictionaryプロジェクト


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間