チュートリアル : Visual Basic または Visual C# を使った Web サービスへのアクセス
次のチュートリアルでは、Visual Basic または Visual C# を使って作成されたアプリケーションから Web サービスにアクセスする手順について説明します。
このチュートリアルでは、次の操作を行います。
ASP.NET Web アプリケーション プロジェクトのテンプレートを使ってクライアント アプリケーションを作成する。
Web サービスに Web 参照を追加する。
Web サービスにアクセスするコードを記述する。
Web アプリケーションをデバッグ モードで実行する。
Web アプリケーションを配置する。
チュートリアルを完了するには、次の情報を指定する必要があります。
このチュートリアルでは、Web アプリケーションを使って Web サービスにアクセスするため、Web プロジェクトを作成するための要件を満たしたコンピュータを用意する必要があります。Web サーバーが置かれているコンピュータ上で Web サービス プロジェクトを作成するには、十分なアクセス許可も必要です。
次のチュートリアルで作成された Web サービス。
Web サービス クライアント プロジェクトの作成
このチュートリアルでは、「チュートリアル : Visual Basic または Visual C# を使った Web サービスの作成」で作成した TempConvert1 という名前の Web サービスにアクセスする単純な Web アプリケーションを作成します。
メモ : |
---|
この温度換算用 Web サービスの作成時にその名前を変更した場合は、このチュートリアル全体で名前 TempConvert1 をそのまま適切な名前に置き換えてください。 |
ASP.NET Web アプリケーションを作成するには
[ファイル] メニューの [新規作成] をポイントし、[Web サイト] をクリックします。
[新しい Web サイト] ダイアログ ボックスで、[ASP.NET Web サイト] アイコンをクリックします。
Web アプリケーションを開発する Web サーバーのアドレスを入力し、ディレクトリ名を TempConvertClient1 と指定します。たとえば、「http://MyServer/TempConvertClient1」と入力します。既定では、プロジェクトにはローカル コンピュータ (https://localhost) が使用されます。
メモ : プロジェクトの種類によっては、場所を指定することでプロジェクト名を設定するため、[プロジェクト名] ボックスが使用できません。たとえば、Web アプリケーションや Web サービスは Web サーバーにあり、そのサーバーで指定された仮想ディレクトリに基づいて名前が設定されます。
メモ : Web アプリケーションは、開発サーバー上で開発されます。既定では、ローカル コンピュータが開発サーバーになります。通常、プロジェクトは、開発サーバー上で開発されてビルドされた後、別のサーバー (デプロイメント サーバー) に配置されます。デプロイメント サーバーは、配置プロジェクトを使用して Web アプリケーションをホストします。ただし、Web アプリケーションをホストするサーバー上で直接開発する場合、開発サーバーとデプロイメント サーバーは同じになります。
[OK] をクリックして、プロジェクトを作成します。
ソリューション エクスプローラで Default.aspx を右クリックし、[デザイナの表示] をクリックしてデザイナを開きます。
[ツールボックス] の [Web フォーム] タブから、TextBox、Label、および Button を 1 つずつ、Default.aspx のデザイン サーフェイスにドラッグし、必要に応じて位置を調整します。
追加したボタン (Button1) を右クリックし、ショートカット メニューの [プロパティ] をクリックします。[プロパティ] ウィンドウで、Text プロパティを Convert に設定します。
追加したラベル (Label1) を右クリックし、ショートカット メニューの [プロパティ] をクリックします。[プロパティ] ウィンドウで、Text プロパティをクリアして、このラベルを空白にします。
Web 参照の追加
Web サービスの探索とは、クライアントが Web サービスの場所を見つけ、そのサービスの説明を取得するプロセスです。Visual Studio の Web サービス探索プロセスでは、あらかじめ定められたアルゴリズムに従って、Web サイトへ問い合わせが行われます。このプロセスの目標は、サービスの説明を見つけることです。サービスの説明は、Web サービス記述言語ツール (WSDL: Web Services Description Language) を使用する XML ドキュメントです。詳細については、「XML Web サービス探索」を参照してください。
サービスの説明には、利用できるサービスの種類と、それらのサービスと対話する方法が記述されています。サービスの説明がないと、プログラムから Web サービスと対話することはできません。詳細については、「XML Web サービスの説明」を参照してください。
アプリケーションには、Web サービスと通信し、その場所を実行時に見つけるための手段が必要です。Web サービスへの Web 参照をプロジェクトに追加した場合、プロキシ クラスを生成することで、このアプリケーションに必要な処理を行っています。プロキシ クラスは、Web サービスのインターフェイスとなり、Web サービスのローカル表現を提供します。詳細については、「Visual Studio の Web 参照」および「方法 : Web サービス プロキシを生成する」を参照してください。
Web 参照を追加するには
[Web サイト] メニューの [Web 参照の追加] をクリックします。
[Web 参照の追加] ダイアログ ボックスの [URL] ボックスに、アクセスする Web サービスのサービスの説明を取得するために、その URL を入力します。たとえば、「https://localhost/TempConvert1/Service1.asmx」のように入力します。次に、[移動] をクリックして、Web サービスに関する情報を取得します。
または
ローカル コンピュータに Web サービスが存在する場合は、ブラウザ ペインの [ローカル コンピュータの Web サービス] リンクをクリックします。次に、表示される一覧で TempConvert1 Web サービスのリンクをクリックして、この Web サービスに関する情報を取得します。
[Web 参照名] ボックスで、Web 参照の名前を ConvertSvc に変更します。これは、この Web 参照に使用する名前空間です。
[参照の追加] をクリックして、対象の Web サービスに Web 参照を追加します。詳細については、「方法 : リモート Web 参照を追加および削除する」を参照してください。
Visual Studio は、サービスの説明をダウンロードし、アプリケーションと Web サービスの間のインターフェイスとなるプロキシ クラスを生成します。
Web サービスへのアクセス
Web サービスへの参照をプロジェクトに追加したら、次の手順では、Web サービスのプロキシ クラスのインスタンスを作成します。この処理を行うと、オブジェクトのメソッドにアクセスするときと同様に、プロキシ クラスのメソッドを呼び出して Web サービスのメソッドにアクセスできます。アプリケーションがこれらのメソッドを呼び出すと、Visual Studio が生成したプロキシ クラス コードによって、アプリケーションと Web サービス間の通信が処理されます。
まず、Web サービスのプロキシ クラスのインスタンスを作成します。次に、TextBox1 に指定された値を取得し、プロキシ クラスを使って Web サービスの ConvertTemperature メソッドを呼び出します。その後、Web サービスから返された値を Label1 に表示します。
Web サービスにアクセスするには
WebForm1.aspx の Convert ボタンをダブルクリックし、このボタン用のイベント処理メソッドを作成し、分離コード ファイルを表示します。
次のコードを入力します。
' Visual Basic Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e as EventArgs) Handles Button1.Click Dim ws As New ConvertSvc.Service Dim dFahrenheit As Double Dim dCelsius As Double Try dFahrenheit = Convert.ToDouble(TextBox1.Text) dCelsius = ws.ConvertTemperature(dFahrenheit) Label1.Text = dCelsius.ToString() Catch Label1.Text = "Conversion failed." End Try End Sub // C# protected void Button1_Click (System.Object sender, System.EventArgs e) { try { ConvertSvc.Service1 ws = new ConvertSvc.Service1(); double dFahrenheit = Convert.ToDouble(TextBox1.Text); double dCelsius = ws.ConvertTemperature(dFahrenheit); Label1.Text = dCelsius.ToString(); } catch { Label1.Text = "Conversion failed."; } }
メモ : Web 参照を追加するときに生成される Web サービス クラスの名前は、前の例での Service1 とは異なる場合があります。
ソリューション エクスプローラで Default.aspx を選択します。
[Web サイト] メニューで、[スタート ページに設定] をクリックします。
ソリューションを保存します。
詳細については、「方法 : マネージ コードを使用して Web サービスにアクセスする」を参照してください。
Web サービス クライアントのデバッグ
Visual Studio には、Web アプリケーションを IDE でビルドおよび実行するための方法が、次のとおり用意されています。
デバッグしながら実行する。
デバッグせずに実行する。
ブラウザで表示する。
Visual Studio プロジェクトとして、この Web アプリケーションは、リリース バージョン用とデバッグ バージョン用にそれぞれ個別の構成を持ちます。このプロジェクトは ASP.NET Web アプリケーション プロジェクトのテンプレートを使って作成されたため、Visual Studio は、これらの構成を自動的に作成し、既定のオプションやその他の設定値を適切に設定しました。詳細については、「方法 : デバッグ構成とリリース構成を設定する」を参照してください。
このチュートリアルでは、Button1_Click イベントにブレークポイントを設定し、デバッグしながら実行する方法を使用します。詳細については、「方法 : マネージ コードを使用して Web サービスをデバッグする」を参照してください。
デバッグを行う前に、デバッグ設定を確認します。詳細については、「デバッグの準備 : ASP.NET Web アプリケーション」を参照してください。
ブレークポイントを使用して、デバッグしながら Web アプリケーションを実行するには
[デバッグ] メニューの [ブレークポイントの作成] をクリックし、[関数でブレーク] をクリックします。
[Function] ボックスに「Button1_Click」と入力し、[OK] をクリックして Button1_Click イベント ハンドラにブレークポイントを挿入します。詳細については、「ブレークポイントの概要」を参照してください。
[デバッグ] メニューの [デバッグ開始] をクリックし、[デバッグが無効です] ウィンドウで [OK] をクリックしてデバッグを開始します。
このコマンドは Visual Studio に Web アプリケーションをデバッガで実行するように指示します。Visual Studio はプロジェクトをビルドし、指定されたデプロイメント サーバーに配置します。完了すると、既定のブラウザが起動し、デプロイメント サーバー上にある .aspx ファイルが表示されます。
ブラウザにページが表示されたら、テキスト ボックスに数字で「212」と入力し、Convert ボタンをクリックします。
処理は Button1_Click イベント ハンドラに到達すると、停止します。Visual Studio デバッガは、ブレークポイントが含まれている行を強調表示します。プログラムを中断している間に、さまざまなタスクを行うことができます。詳細については、「デバッガのロードマップ」および「デバッガでのデータ表示」を参照してください。
[デバッグ] メニューの [続行] をクリックして、処理を続行します。
Web サービスは、変換された値を応答として返します。また、アプリケーションは、Label1 のテキストを 100 に設定します。
Web アプリケーションを停止してコード エディタに戻るには、[デバッグ] メニューの [デバッグの停止] をクリックします。
[デバッグ] メニューの [すべてのブレークポイントの解除] をクリックします。
クライアントの配置
ほかのユーザーが Web アプリケーションを利用できるように、Web アプリケーションは、サポート対象のクライアントがアクセスできる Web サーバーに配置する必要があります。開発サーバー以外のサーバーに Web アプリケーションを配置するには、Web セットアップ プロジェクトを追加する方法と、デプロイメント サーバーへ必要なファイルをコピーする方法があります。このチュートリアルでは、Web アプリケーションの配置方法を選択できます。詳細については、「アプリケーションとコンポーネントの配置」を参照してください。
Web セットアップ プロジェクトを使用して Web アプリケーションを配置するには
[ファイル] メニューの [追加] をポイントし、[新しいプロジェクト] をクリックします。
[その他のプロジェクトの種類] ノード、[セットアップ/配置プロジェクト] ノードの順に選択し、[Web セットアップ プロジェクト] をクリックします。
[プロジェクト名] ボックスに「TempConvertClient1WebSetup」と入力し、[OK] をクリックします。
メモ : 既定では、インストーラが配置先のサーバーに仮想ディレクトリを作成するときに、この配置プロジェクトの名前が使用されます。
ファイル システム エディタの左ペインで、[Web アプリケーション フォルダ] を選択します。詳細については、「ファイル システム エディタ」を参照してください。
ソリューション エクスプローラで、[TempConvertClient1WebSetup] を右クリックして [追加] をポイントし、[プロジェクト出力] をクリックします。
[プロジェクト出力グループの追加] ダイアログ ボックスで、[コンテンツ ファイル] を選択します。詳細については、「方法 : ファイル システム エディタでプロジェクト出力を追加および削除する」を参照してください。
- [コンテンツ ファイル] グループは、Web アプリケーションのその他のファイルで構成されます。たとえば、WebForm1.aspx と Web.config があります。
[OK] をクリックします。
[ソリューション エクスプローラ] で、TempConvertClient1WebSetup プロジェクトを右クリックし、ショートカット メニューの [ビルド] をクリックします。
これにより、ローカル プロジェクト ディレクトリに Windows インストーラ ファイルが作成されます。このファイルを実行すると、Web アプリケーションがインストールされます。
プロジェクトをコピーして Web アプリケーションを配置するには
[ソリューション エクスプローラ] で TempConvertClient1 プロジェクトを選択します。
[プロジェクト] メニューの [Web サイトのコピー] をクリックします。
[接続先] ボックスの横にあるアイコンをクリックして [Web サイトを開く] ダイアログ ボックスを開きます。プロジェクトをコピーする場所を検索します。
ソース Web サイト ペインでファイルを選択し、右矢印アイコンをクリックすることにより リモート Web サイト ペインにコピーおよび移動します。
[Web サイトのコピー] をクリックして Web サイトをコピーします。