連載改訂版 C#入門第20章 実行時に参照可能な属性 |
![]() |
20-10 Webサービスで使われる属性
属性はWebサービスを記述する場合にも、便利に使われる。Visual Studio .NETでWebサービスのプロジェクトを作成すると自動生成されるソース・コードには、コメントとしてHelloWorldメソッドが埋め込まれている。コメント記号を外してこれを有効にしたのがList 20-10である。
|
|
| List 20-10 |
これをVisual Studio .NETから実行するとInternet Explorerが立ち上がり、Fig.20-9のような情報が表示される。
![]() |
| Fig.20-9 |
HelloWorldメソッド・リンクをクリックすれば、Fig.20-10のように詳細を知ることができる。
![]() |
| Fig.20-10 |
テストのため、[起動]ボタンを押すとFig.20-11のようになる。
![]() |
| Fig.20-11 |
見所はもちろん24行目のWebMethod属性である。このクラスには複数のメソッドが含まれているが、Webメソッドとして公開されるのはWebMethod属性の付いたメソッドだけである。古い世代のプログラミング言語では、このような指定をソース・コードに記述可能とするために回りくどい方法や独自拡張などを用いていたが、C#では属性を用いることでエレガントに実現している。
20-11 より高度なWebサービス
List 20-10のサンプルはそのままでは実用に耐えない。なぜなら、名前空間として「http://tempuri.org/」という一時利用のためのものが使われているからだ。これを正規のサービス用のものに置き換えなければならない。さらに、よりきめ細かく指定も書き込んでみよう。List 20-11を見てほしい。
|
|
| List 20-11 |
List 20-11をVisual Studio .NETから実行するとInternet Explorerが立ち上がり、Fig.20-12のような情報が表示される。
![]() |
| Fig.20-12 |
SampleMethodリンクをクリックすれば、Fig.20-13のように詳細を知ることができる。
![]() |
| Fig.20-13 |
テストのため、[起動]ボタンを押すとFig.20-14のようになる。
![]() |
| Fig.20-14 |
まず名前空間を指定するコードから説明しよう。名前空間を指定するには、15行目のようにWebService属性を記述する。これはクラスに付く属性なので、18行目のクラス宣言の手前に記述されている。Namespaceは名前空間のURIを指定する。そのほかに、幾つかの名前付きパラメータを記述してみた。Descriptionはそのサービスの説明文を記述する。Nameはそのサービスの名前を記述する。
28行目のWebMethod属性にも、オプションの名前付きパラメータを充実させてみた。BufferResponseはレスポンスをバッファリングするかどうかを指定する。サイズの大きなレスポンスはバッファリングしない方が効率がよいらしい。CacheDurationはキャッシュが有効な時間を秒単位で指定する。Descriptionはメソッドの説明を記述する。EnableSessionはセッション管理を有効にするかどうかを指定する。MessageNameは送受信されるメッセージの名前を指定する。Fig.20-12を見て分かるとおり、外部からはこの名前のメソッドが存在するかのように見える。TransactionOptionはトランザクションを使用するかどうかを指定する。
このように、多くの機能が名前付きパラメータとして用意されているので、その気になれば、かなりきめ細かく動作をコントロールできる。しかも、同じソース・コード上にコードと指定をすべていっしょに記述できるため扱いやすい。これも属性という機能のおかげであろう。
なお、TransactionOptionの値のみSystem.Web.Services名前空間ではなく、System.EnterpriseServices名前空間上にあるようだ。そのため、8行目のusingが追加されている点に注意されたい。![]()
『新プログラミング環境 C#がわかる+使える』本記事は、(株)技術評論社が発行する書籍『新プログラミング環境 C#がわかる+使える』から許可を得て一部分を転載したものです。 【本連載と書籍の関係について 】 この書籍は、本フォーラムで連載した「C#入門」を大幅に加筆修正し、発行されたものです。連載時はベータ版のVS.NETをベースとしていましたが、書籍ではVS.NET製品版を使ってプログラムの検証などが実施されています。技術評論社、および著者である川俣晶氏のご好意により、書籍の内容を本フォーラムの連載記事として掲載させていただけることになりました。 →技術評論社の解説ページ ご注文はこちらから |
| INDEX | ||
| 改訂版 C#入門 | ||
| 第20章 実行時に参照可能な属性 | ||
| 20-1 属性(アトリビュート)とは何か? | ||
| 20-3 クラスに付く属性 | ||
| 20-6 2つの利用可能な属性名 | ||
| 20-10 Webサービスで使われる属性 | ||
| 「連載:改訂版 C#入門」 |
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -









