特集
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メソッドをあたかもローカルで定義されたクラス内のメソッドのようにプログラムから扱うことができるようになる。具体的には、次で示すプログラム・コードを見ていただければ分かるだろう。


 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プロジェクト


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

本日 月間