最終更新日 2005 年 11 月 1 日

このコンテンツのポイント

  • Visual Studio 2005 を使った Web 参照の設定
  • Windows フォーム アプリケーションでの Web サービス利用の実装

今回紹介するコード

Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, _
           ByVal e As System.EventArgs) Handles Button1.Click

       ' Web サービスの戻り値
        Dim iDays As Integer
       ' Web サービスの引数
        Dim dtDate As DateTime
       ' Web サービスのインスタンス
        Dim wsMyService As New MyService.Service

       ' フォーム上で入力した日付の取得
        dtDate = DateTimePicker1.Value
       ' Web サービスの呼び出し
        iDays = wsMyService.LiveDate(dtDate)
       ' 結果の表示
        Label1.Text = dtDate.ToShortDateString() & " から " & _
                     iDays.ToString() & " 日目です"

   End Sub
 

今回のシステム要件

  • Visual Studio 2005 Beta 2

目次

はじめに
クライアント アプリケーションの開発準備
画面をデザインする
Web 参照の追加をする
コードを実装する
実行する
おわりに
注釈

 

Visual C# の内容はこちらに掲載しています。
10 行でズバリ !! Web サービス クライアント アプリケーションの開発 (C#)

はじめに

Web サービスをアプリケーションから利用する場合、本来は Web サービスと通信をするための様々な処理を実装しなくてはなりません。しかし、Visual Studio 2005 を利用すると、自分のアプリケーションから大変簡単に Web サービスを利用することができます。

では、その例を簡単に見ていくことにしましょう。

なお、今回のアプリケーションでは、「10 行でズバリ!! ASP.NET による Web サービスの開発」で作成した、「LiveDate」 Web サービスを利用しますので、あらかじめ手順に従って作成しておく必要があります。

クライアント アプリケーションの開発準備

Visual Studio 2005 を起動して、新規にプロジェクトを作成します。([ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。) ここでは、言語として Visual Basic を選択し、プロジェクト ペインでは、 [Windows アプリケーション] テンプレートを選択します。[プロジェクト名] ボックスに任意の名称を入力し(ここでは WSClientVB)、[場所] ボックスに適当なパスを入力して、[OK] ボタンをクリックします。

これで Windows フォームによるクライアント アプリケーション開発の準備が完了しました。

図 1. クライアントのためのプロジェクトを新規に作成する

画面をデザインする

フォームのデザインは、ドラッグ アンド ドロップという一貫性のある手順で行うことができます。Windows フォーム アプリケーションについては 「10 行でズバリ !! Windows フォームによるクライアント アプリケーション開発」 をご参照ください。

画面左側 (*1) に表示されている [ツールボックス] の [すべてのWindows フォーム] コントロールの中から、DateTimePicker コントロール、Button コントロール、Label コントロールを、それぞれフォーム上にドラッグ アンド ドロップします。各コントロールの Text プロパティ、Font プロパティを変更して、図 2 と同じようになるように調整します。(ここでは、画面レイアウト自体は重要ではないので、図 2 に厳密に合わせる必要はありません。)

図 2. ユーザー インターフェイスを構成する

Web 参照の追加をする

ここで、まず Web サービスを利用できるようにしておきましょう。

現在のプロジェクトは、そのまま開いておいて、スタート メニューから、新たに Visual Studio 2005 を起動し、「10 行でズバリ!! ASP.NET による Web サービスの開発」で作成した Web サイトのソリューションを開きます。ソリューション エクスプローラから Web サイト上の Service.asmx ファイルを右クリックして、[ブラウザで表示] をクリックします。これによって、ASP.NET 開発サーバーが起動し、Web サービスの説明用ページが開きます。このとき表示されたブラウザのアドレスを、コピーするなどして、覚えておいてください。通常、次のような形式になっています (ポート番号は環境によって異なります)。一旦、ASP.NET 開発サーバーが起動したら、ブラウザは閉じておいてもかまいません。

Visual Basic
http://localhost:1191/MyWebService/Service.asmx
 

Visual Studio 2005 で Web サービスにアクセスするコードを作成するには、「Web 参照の追加」 を行います。この操作を行うと、クライアント アプリケーションには、Web サービスにアクセスするためのクラス、「プロキシ クラス」が自動的に生成されます。

ここで、クライアント アプリケーション側の Visual Studio に戻り、[プロジェクト] メニューの [Web参照の追加] をクリックします。すると、[Web 参照の追加] ダイアログボックスが表示されます (図 3)。前述のアドレスに「?wsdl」を付加した以下のアドレスを、このダイアログボックスの [URL] ボックスに入力します。

Visual Basic
http://localhost:1191/MyWebService/Service.asmx?wsdl
 


図 3. [Web 参照の追加] ダイアログボックス

このアドレスは、Web サービスから WSDL (Web サービス記述言語) を取得するためのアドレスです。WSDL は、Web サービスへのアクセス方法などを定義するためのXML 形式の一種の言語です。ASP.NET では、Web サービスのアドレスに 「?wsdl」を付けてアクセスすると、自動的に WSDL を生成します。

上記のアドレスを入力したら、[URL] ボックスの右端に付いた [移動] ボタンを押します。これによって、クライアント側の Visual Studio は、Web サービスから WSDL を取得して解析し、2つのメソッドがあることを認識します (図 4)。なお、Internet Explorer 上から、WSDL を取得するアドレスに直接アクセスすれば、WSDL の具体的な XML 形式の情報を見ることができます。

図 4. WSDL を取得して 2つのメソッドがあることを認識する

ここで、[Web 参照名] ボックスに、の欄に、この後生成するプロキシ クラスの名前空間名を入力します。ここでは、MyService と設定しておきましょう。参照名を設定したら [参照の追加] ボタンをクリックします。

図 5. Web 参照名を指定する

これで、Web サービスにアクセスするためのプロキシ クラスが、クライアント側に自動作成されました。なお、プロキシ クラスのソースコードのファイルは、既定のソリューション エスクプローラの設定では、表示されません。ソリューション エクスプローラの上部にある [すべてのファイルを表示] ボタンを押すことで、表示できます。(ソリューション エクスプローラ内の選択項目によって、ボタンの並びが変わるので注意してください。ボタンの名前は、マウスポインタをボタンの上に置くことで分かるので確認してみてください。) プロキシ クラスは、Reference.vb というファイルの中に記述されています。

図 6. プロキシ クラスは、Reference.vb 内に作成される

なお、今回は ASP.NET 開発サーバーを利用しましたが、IIS 上に公開された ASP.NET Web サービスに対しても、同様に Web 参照の追加を行うことができます。その場合は、わざわざ Web サービス側のソリューションを開いておく必要はありません。

コードを実装する

Web 参照の設定が完了した後は、アプリケーションとして必要になるコードを記述します。ここで、Form1 のフォーム デザイナに戻り、フォーム上のButton コントロールをダブルクリックして、Click イベント ハンドラを生成します。

このイベント ハンドラでは、Web サービスに渡す引数を準備し、Web サービスを呼び出し、そして、結果を表示するめ、以下のコードを実装します。

Visual Basic
rivate Sub Button1_Click(ByVal sender As System.Object, _
		        ByVal e As System.EventArgs) Handles Button1.Click

    ' Web サービスの戻り値
    Dim iDays As Integer
    ' Web サービスの引数
    Dim dtDate As DateTime
    ' Web サービスのインスタンス
    Dim wsMyService As New MyService.Service

    ' フォーム上で入力した日付の取得
    dtDate = DateTimePicker1.Value
    ' Web サービスの呼び出し
    iDays = wsMyService.LiveDate(dtDate)
    ' 結果の表示
    Label1.Text = dtDate.ToShortDateString() & " から " & _
                  iDays.ToString() & " 日目です"

End Sub
 

このコードでは、New MyService.Service の記述によって、プロキシ クラスのインスタンスを作成します。DateTimePicker から日付を取得し、通常のメソッド呼び出しと同じように インスタンスの LiveDate メソッドを呼び出します。実際のWeb サービスとのネットワーク上のやり取りは、プロキシ クラスのインスタンスの LiveDate メソッドの内部で面倒みてくれます。クライアント側からすると、Web サービス上の LiveDate メソッドを呼び出すことは、単にインスタンスのメソッドを呼び出すことと変わりありません。Web サービスといっても特別なことは意識することはないでしょう。最後に戻り値を整形して Label コントロールに表示します。

実行する

イベントのコードの記述が完了したら、実行してみましょう。

アプリケーションを実行させるには [Ctrl+F5] キーを押すか、[デバッグ] メニューの [デバッグなしで開始] をクリックします。以下のフォームが表示されます (図 7)。

図 7. フォームが表示される

DateTimePicker を使って 1 日前の日付を選択し、[計算] ボタンをクリックします。この時点で Web サービスが呼ばれて、その結果が Label に表示されます (図 8)。

図 8. アプリケーションの実行結果

おわりに

Visual Studio 2005 を使うと、簡単に Web サービスにアクセスするクライアントを利用する事ができます。すでにインターネット上で検索サービスや翻訳サービスなどの Web サービスが公開されています。関連するコンテンツなどを参考にしながら、こういった各種サービスを組み込んだ新しいアプリケーションの開発にチャレンジしてみてください。

注釈

*1 : 画面上の位置について
各サブウィンドウの位置は、Visual Studio 2005 のセットアップ終了後に標準的に配置されている場所を示しています。これらのウィンドウやツールボックスは、ドラッグ アンド ドロップによって画面上の任意の位置に配置して、開発をされる皆さんが利用しやすい場所へ移動することができます。

もし画面上のどこにも見当たらないときは、[表示] メニューをクリックし、該当ウィンドウのメニューをクリックするか、同じく [表示] メニューをクリックし、[その他のウィンドウ] サブメニューから選択することで再度画面上に表示させることができます。


Code Recipe .NET Framework デベロッパー センター

ページのトップへ