特集
NetDictionaryで始める
Webサービス・プログラミング
7.追加されたWeb参照とプロキス・クラス
デジタルアドバンテージ
2001/10/02
|

|
[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参照]のツリー下に表示される。 |
|
 |
サーバのアドレス“www.iwebmethod.net”の単語の並びを逆にしたものが参照名として使用される。 |
|
ソリューション・エクスプローラーをクラス・ビューに切り替えると、現在開いているプロジェクトに含まれるクラスの構成、および各クラス内のメソッドやプロパティをツリーとして参照することができる。
これを見ると、ネームスペースicdclient.net.iwebmethod.wwwとして、ICD、ITEM、WEBPAGE、WORDの4つのクラスが、「Web参照の追加」により追加されたことが分かる。また、ICDクラスには多くのメソッドが含まれているが、その中にWebサービス・メソッドであるGetItemByIdやSearchWordが含まれていることも確認できる。
 |
Web参照追加後のクラス・ビュー |
ネームスペースicdclient.net.iwebmethod.wwwに4つのクラスが追加されている。 |
|
 |
追加されたクラスのネームスペース階層。 |
|
 |
Webサービス・メソッドを含んだプロキシ・クラスであるICDクラス |
|
 |
ICDクラスに4つのWebサービス・メソッド(とICDクラスのコンストラクタであるICD())が含まれている。 |
|
 |
Form1クラスはWindowsアプリケーションのフォームを記述している自動生成されたクラス。 |
|
ICDクラス以外のクラスは、SearchWordメソッドなどが戻り値として返す値の型である。例えばSearchWordメソッドは、WORD型オブジェクトの配列を返す。これらのクラスはプロキシ・クラスと呼ばれ、Webサービスの仕様を記述しているWSDLから、VS .NETにより自動生成される。プロキシ・クラスは、プログラムとWebサービスとの間のプロキシとして機能し、これによりサーバ・サイドにあるWebメソッドをあたかもローカルで定義されたクラス内のメソッドのようにプログラムから扱うことができるようになる。具体的には、次で示すプログラム・コードを見ていただければ分かるだろう。
Insider.NET 記事ランキング
本日
月間