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

.[WebMethod]アトリビュートの機能

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


 Webサービスとして公開するメソッドには“[WebMethod]”というキーワードをつければよい。ところでこのキーワードにはどういった働きがあるのだろうか。これはC#の「アトリビュート(属性)」と呼ばれる機能だ。これはクラスの宣言やメソッドの宣言の前に配置して、それらに関連する情報をプログラムに埋め込むことができる機能を持つ。アトリビュートによって付加した情報は、実行時に別のコンポーネントから参照することができる。「[WebMethod]アトリビュート」の場合は、ASP .NETがそのメソッドを含むクラスをインスタンス化するときに、そのクラスに含まれた[WebMethod]がついているメソッドを列挙することにより、ASP .NETがどのメソッドをWebサービスとして公開すべきかを知ることができる。このように、アトリビュートが言語に導入されたことにより、これまでは外部の定義ファイルなどで記述していた情報をソース・コードに埋め込んだ、自己完結したコンポーネントが作成可能となっている。

 “[…]”によって指定可能なアトリビュートには、その機能を実装したクラスが存在する。“WebMethod”の場合には、「System.Web.Servicesネームスペース」の「WebMethodAttributeクラス」がこれに当たる。なお大括弧によりアトリビュートとして指定する場合には、クラス名の後ろについている“Attribute”を省略して記述することができる。このため[WebMethod]の代わりに、[WebMethodAttribute]と記述しても、またフルネームで[System.Web.Services.WebMethodAttribute]と記述してもまったく問題はない。

 [WebMethod]ではオプションとして、「Description属性」によりメソッドについての説明を付けることができる。先ほどのプログラムに対して、これを書き加えてみる。

 1: <% @WebService Language="c#" Class="WhatsTimeClass" %>
 2:
 3: using System;
 4: using System.Web.Services;
 5:
 6: public class WhatsTimeClass: WebService {
 7:   [WebMethod(Description="現在の時刻の取得")]
 8:   public string WhatsTime() {
 9:     return DateTime.Now.TimeOfDay.ToString();
10:   }
11: }
Description属性を指定した[WebMethod]
参照用ページで表示される各メソッドに説明を付けることができる。

 こうしてWebサービスの参照用ページを開くと、公開されたメソッドの下に「Description属性」で指定した文字列が表示されているのが分かる。

メソッドに関する説明を追加したWebサービスの参照用ページ
公開されたメソッドの下に「Description属性」で指定した文字列が表示されている。

 おそらくWebサービスの利用者は、前回でに行ったように、まず参照用ページを開き、ブラウザからWebサービスを試してみると思われるので、このページに分かりやすい説明をつけておくことは重要だろう。

 Description属性は、WebMethodAttributeクラスのpublicなプロパティとして実装されている。オンライン・ヘルプでこのクラスを参照すれば、他にどのような属性が使用できるかを知ることができる。


 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 記事ランキング

本日 月間