特集
NetDictionaryで始める
Webサービス・プログラミング
3.[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なプロパティとして実装されている。オンライン・ヘルプでこのクラスを参照すれば、他にどのような属性が使用できるかを知ることができる。
Insider.NET 記事ランキング
本日
月間