| NetDictionaryで始める Webサービス・プログラミング 5.WebServiceクラスの継承
デジタルアドバンテージ |
|
今回、例として作成したwhatstime.asmxで、まだ解説していない項目が1つ残っている。それはWhatsTimeClassクラスが継承しているWebServiceクラス(ネームスペースはSystem.Web.Services)についてだ。このクラスは、ASP .NETが管理するセッションやHTTPリクエストなどのさまざまなオブジェクトにアクセスするためのプロパティを持っている(しかし今回のサンプルではこれらをまったく利用していないため、本当はこのクラスを継承していなくてもよい)。このWebServiceクラスのプロパティの1つである「Applicationオブジェクト」を使用した、非常に簡単な「アクセス・カウンタ」Webサービスを次に示す。
|
|
| 「アクセス・カウンタ」Webサービス | |
| ハッシュ・テーブルであるApplicationオブジェクトを使用してアクセスされた回数をカウントし、その値を返すWebサービス。 | |
Applicationオブジェクトは、ある1つのWebサービスにおいて、すべてのアクセスに対して共通して使用することのできるハッシュ・テーブル(引数として与えられたキーに対する値を保持する)である。この例では、“counter”という文字列をキーにして、このWebサービスが呼び出された回数を保存している。Webサービスが最初に起動された場合には“Application["counter"]”の値はnullになっているため、まず0で初期化する。2回目以降のアクセスではこの値を1増やしてから、Webサービスの戻り値として返す。誰がアクセスしても値が1ずつ増えていくのでアクセス・カウンタとして使えるわけだ(ただし排他制御を行っていないので、これだけでは同時アクセスがあった場合にカウントが狂う可能性があるが)。このWebサービスの場合、Applicationオブジェクトの値は、マシンを再起動したり、IISを再起動したりするまで保持される。
Applicationオブジェクトは、例えば、すべてのクライアントに共通し、かつセットアップに時間のかかるデータを保持するのに便利である。実際NetDictionaryの最初のバージョンでは、検索ごとに見出し語テーブル(見出し語と、それを識別するためのID番号を対にしたテーブル)にアクセスしていたが、すべての見出し語をWebサービスの起動時にデータベースからApplicationオブジェクトに読み込むようにチューンアップした。この辺りの話はまた回を改めてすることにしよう。
次回は「ADO .NET」によるデータベース処理を解説しながら、今回で解説した内容と組み合わせて、「最初のバージョン」のNetDictionaryサービス・プログラムについてご紹介する予定だ。
| INDEX | ||
| [特集]NetDictionaryで始めるWebサービス・プログラミング | ||
| 第3回 Webサービス・プログラミング始めの一歩 | ||
| 1.Webサービスを記述するasmxファイル | ||
| 2.Codebehindによるコードの分離 | ||
| 3.[WebMethod]アトリビュートの機能 | ||
| 4.[WebService]アトリビュートの追加 | ||
| 5.WebServiceクラスの継承 | ||
| 特集 : NetDictionaryプロジェクト |
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|





