NetDictionaryで始める Webサービス・プログラミング 7.追加されたWeb参照とプロキス・クラス
|
[Web参照の追加]ダイアログの[アドレス]部分には、WSDLファイル、またはWSDLの存在位置が記述されたDISCOファイルのURLを入力すればよい。Webサービスを提供するサーバが.NET Frameworkを使用している場合には、asmxファイルのURLを指定すれば、それらを自動的に認識してくれる。ちなみにICD Webサービスの場合なら、これらのURLは次のようになる。
WSDL : http://www.iwebmethod.net/icd1.0/icd.asmx?WSDL
DISCO : http://www.iwebmethod.net/icd1.0/icd.asmx?DISCO
サーバが.NET Framework以外のテクノロジを使用している場合でも、そのWSDLファイルのURLを指定すればよい。ただしこれまでに筆者が使用したところでは、参照の追加を正しく実行することができても、プロキシ・クラスが作成されず、プログラムから呼び出せないというケースが少なくなかった。これは、WSDLがオープンな仕様であるにもかかわらず、まだ異なるベンダー間で完全な相互運用性が実現されていないためである(これに関しては、.NET Frameworkの開発責任者デビッド・トレッドウェル氏もインタビューのなかで認めている)。
さて、[参照の追加]ボタンをクリックすると、ソリューション・エクスプローラーの[Web参照]のツリーに「net.iwebmethod.www」の項目が追加される。この名前は、Webサービスがあるサーバ“www.iwebmethod.net”の単語の並びを逆にしたものである。この名前は、Webサービスで使用されるすべてのクラスに対するネームスペースと同じものだ(詳細はすぐ次で述べる)。
Web参照追加後のソリューション・エクスプローラー | |||
「Web参照の追加」で設定したWebサービスは[Web参照]のツリー下に表示される。 | |||
|
ソリューション・エクスプローラーをクラス・ビューに切り替えると、現在開いているプロジェクトに含まれるクラスの構成、および各クラス内のメソッドやプロパティをツリーとして参照することができる。
これを見ると、ネームスペースicdclient.net.iwebmethod.wwwとして、ICD、ITEM、WEBPAGE、WORDの4つのクラスが、「Web参照の追加」により追加されたことが分かる。また、ICDクラスには多くのメソッドが含まれているが、その中にWebサービス・メソッドであるGetItemByIdやSearchWordが含まれていることも確認できる。
Web参照追加後のクラス・ビュー | ||||||||||||
ネームスペースicdclient.net.iwebmethod.wwwに4つのクラスが追加されている。 | ||||||||||||
|
ICDクラス以外のクラスは、SearchWordメソッドなどが戻り値として返す値の型である。例えばSearchWordメソッドは、WORD型オブジェクトの配列を返す。これらのクラスはプロキシ・クラスと呼ばれ、Webサービスの仕様を記述しているWSDLから、VS .NETにより自動生成される。プロキシ・クラスは、プログラムとWebサービスとの間のプロキシとして機能し、これによりサーバ・サイドにあるWebメソッドをあたかもローカルで定義されたクラス内のメソッドのようにプログラムから扱うことができるようになる。具体的には、次で示すプログラム・コードを見ていただければ分かるだろう。
INDEX | ||
[特集]NetDictionaryで始めるWebサービス・プログラミング | ||
第2回 Visual Studio .NETで作るWebサービス・クライアント | ||
1.ICD Webサービスを試す | ||
2.見出し語を検索する | ||
3.単語の意味を取得する | ||
4.Visual Studio .NETを起動する | ||
5.GUIを作成する | ||
6.Web参照を追加する | ||
7.追加されたWeb参照とプロキス・クラス | ||
8.ネームスペースの指定を追加する | ||
9.イベント・ハンドラを記述する | ||
10.アプリケーションを実行する | ||
特集 : 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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|