連載

プロフェッショナルVB.NETプログラミング

第29回 属性(後編)

(株)ピーデー
川俣 晶
2002/12/14

Page1 Page2 Page3

Webサービスで使われる属性の概要

 この連載ではWebサービスの詳細にまで踏み込まないが、Webサービスを記述する際にも属性が活用される。その使われ方を見るために、簡単なWebサービスのサンプル・プログラムを見てみよう。

 VS.NETのIDEのメニューから[ファイル]−[新規作成]−[プロジェクト]と選び、[プロジェクトの種類]を[Visual Basicプロジェクト]に選択してから、[テンプレート]に[ASP.NET Webサービス]を選ぶ。これによって、以下のようなソース・コードを持つプロジェクトが生成される。

  1: Imports System.Web.Services
  2:
  3: <WebService(Namespace := "http://tempuri.org/")> _
  4: Public Class Service1
  5:   Inherits System.Web.Services.WebService
  6:
  7: …Web サービス デザイナで生成されたコード…
  8:
  9:   ' WEB SERVICE EXAMPLE
 10:   ' HelloWorld() サービスのサンプルは文字列 Hello World を返します。
 11:   ' ビルドするには、以下の行からコメントを削除して保存してからプロジェクトをビルドします。
 12:   ' この Web サービスをテストするには、.asmx ファイルがスタート ページに設定されていることを確認し、
 13:   ' F5 キーを押してください。
 14:   '
 15:   '<WebMethod()> Public Function HelloWorld() As String
 16:   '   HelloWorld = "Hello World"
 17:   ' End Function
 18:
 19: End Class
テンプレート[ASP.NET Webサービス]で生成されるサンプル・プログラム5

 ここで15〜17行目のコメントを外してから、ビルドして実行してみよう。

自動生成されたサンプル・プログラム5にあるWebサービスの実行画面

 ここで、HelloWorldというリンクをクリックすると以下のような画面になる。

HelloWorld Webサービスの起動画面

 この起動ボタンを押すと、ソース・コード中の15〜17行目のHelloWorldメソッドが呼び出され、以下のような結果が表示される。

HelloWorld Webサービスの実行結果

 このサンプル・プログラムでの属性の使い方を見てみよう。まず、3行目のWebService属性は、クラスに対してWebサービスに関連する情報を付加するために使われている。例えば、この例では、Webサービスの名前空間(VB.NETの名前空間とは異なるものであることに注意)を「Namespace := http://tempuri.org/」という名前付き引数で指定している。

 また、15行目のWebMethod属性は、メソッドがWebサービス経由で呼び出し可能であることを指定している。ソースからは見えない状態になっているが、このクラスには多数のメソッドが存在している。その中で、実際にHelloWorldメソッドだけがWebサービスとして閲覧したときに見えるのは、このメソッドにのみWebMethod属性が付いているためである。つまり、Webサービスを行うクラスを作成する場合、属性の有無により、実際に公開するメソッドと、公開しない内部処理用のメソッドを容易に区別することができるわけである。属性の価値を理解するために、ここで特に注目する価値があるのは、WebMethod属性はVB.NETの言語の一部ではないということである。後からソース・コードに埋め込める情報を追加定義できることが、属性の大きな長所である。将来、何か新しい技術が出現し、VB.NETがそれに対応する場合でも、属性を使ってそれを行うことができるなら、言語そのものを拡張する必要はなく、とても柔軟であるといえる。

次回予告

 次回は、これまでの連載で解説する機会のなかったいくつかのノウハウについて解説を予定している。End of Article


 INDEX
  連載 プロフェッショナルVB.NETプログラミング
  第29回 属性(後編)
    1.属性を自作する
    2.複数の属性を持たせる
  3.Webサービスで使われる属性の概要
 
「プロフェッショナルVB.NETプログラミング」


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

本日 月間