.NET Framework SDKで始める.NETプログラミング(前編)
11.Hello World展覧会(8) - Webアプリケーション -デジタルアドバンテージ 遠藤孝信2001/02/10 |
|
Webアプリケーション版Hello World
最後は、今作成したWebサービスを呼び出し、結果をWebブラウザに返すWebアプリケーションを作成してみる。ただしこれには、若干の下準備が必要だ。まず、ネットワーク上にあるWebサービスと、それを呼び出すアプリケーション(今回の場合はWebアプリケーション)との間を取り持つプロキシ・クラスが必要となる。プロキシ・クラスは、Webサービスの呼び出し時に必要なパラメータなどをSOAPのメッセージにしてサーバに送信し、返ってきたXMLのメッセージを取得してアプリケーションに渡すためのものだ。プロキシ・クラスの役割については、別稿の「特集:.NET Framework入門」が詳しいのでそちらを参照されたい。
ただし、プロキシ・クラスは、.NET SDKに付属するツールで自動生成でき、Webサービスを呼び出すのにSOAPやXMLの知識はまったく必要ない。あらかじめプロキシ・クラスをDLLファイルにコンパイルして配置しておくだけだ。
HelloServiceのためのプロキシ・クラスは、WebServiceUtil.exeを使用して、以下の手順で自動生成することができる。この際デフォルトでは、C#のコードが生成される。
WebServiceUtil /c:proxy /path:http://localhost/sdk/helloservice.asmx?SDL
/out:HelloService.cs /n:HelloService |
最後の“/n:”オプション(/namespace:の省略形)は、出力されるプログラムのネームスペースを指定するものである。以下のリストは、上記のコマンドにより生成されたHelloService.csであるが、コード全体が「namespace HelloService」により構造化されているのが分かる。このようにプログラムでも独自のネームスペースを作成することができる。Webアプリケーションからは、このネームスペースを指定することによって、それに含まれているクラス(プロキシ・クラス)を識別し、呼び出すことができる。
//----------------------------------------------------------------- |
WebServiceUtil.exeツールにより自動生成されたプロキシ・クラスのソースコードに4つあるメソッドのうち、2番目のHelloServiceメソッドが、先ほどのWebサービスとして記述したHelloServiceメソッドの代理、つまりプロキシとなる。
こうしてHelloService.csを生成したら、次はこれを以下のようにコンパイルして、HelloService.dllを作成する。“/t:”オプション(/target:の省略形)で“library”と指定することによって、DLLであるHelloService.dllが生成される。
csc /t:library /r:system.WebServices.dll
|
Webアプリケーションが外部のDLLファイルを使用する場合には、それらのDLLファイルをWebアプリケーションがあるディレクトリ内のbinディレクトリに配置する必要がある。このため、Webアプリケーション用ディレクトリ以下にbinディレクトリを作成し、生成されたHelloService.dllをこのbinディレクトリにコピーしてやっと準備は完了である。
mkdir bin |
前置きが長くなってしまったが、次にHello World Webサービスを呼び出すWebアプリケーションのC#言語スクリプトを示す。ASP.NETでのスクリプト・ファイルの拡張子は「.aspx」なので、作成したスクリプトはasphello.aspxというファイル名で保存する。
|
|||||||||||||||||||||
| Webアプリケーション版Hello Worldのソースコード | |||||||||||||||||||||
|
3行目で指定しているネームスペースは、先ほどプロキシ・クラスに付けたものである。このImportディレクティブにより、binディレクトリに置いたHelloService.dllで定義されているクラスHelloClassを直接使用することができる。C#の“using”と同じだ。ASP.NETでは、Systemなど基本的なネームスペースはデフォルトで取り込まれる。
ASP.NETではページがロードされるときに1度だけPage_Loadメソッドが呼び出される。今回のプログラムでは、このタイミングでWebサービスを呼び出し、戻り値として与えられる文字列(“Hello Web Service World!”)を出力している(6〜11行目)。ここでは文字列を表示するためにWebコントロールの1つであるラベル・コントロールを使用しているが、これについても別稿の「特集:.NET Framework入門」で少し解説している。
Webサービスと同様に、このスクリプトもIISの仮想ディレクトリに配置し、Webブラウザから呼び出して(表示して)実行する。
![]() |
| Webアプリケーション版Hello Worldを実行したところ |
| IISの仮想ディレクトリに配置したWebアプリケーションのスクリプト・ファイル(.aspxファイル)をWebブラウザで表示し実行する。するとWebアプリケーションが前述のWebサービス(Webサービス版Hello World)を呼び出し、戻り値として得た文字列(“Hello Web Service World!”)をブラウザに戻す。今度は文字列だけが正しく表示されていることが分かる。 |
■
以上で本稿の前編は終わりである。後編では、.NET SDKに含まれている各種ツールやドキュメント、サンプル・プログラム、チュートリアルについて解説する予定だ。
TechTargetジャパン
- 新人プログラマーのためのInsider.NETの歩き方 2012 (2012/5/22)
晴れて.NETプログラマーとなる新人が効率的に開発技術を習得するには? 大量にある記事群の中から新人が読むべきお勧めを厳選して紹介 - jQuery MobileでJavaScriptプログラミング (2012/5/17)
jQuery Mobileは手軽なだけでなく、JavaScriptのAPIも充実しており、独自機能の実装もできる。今回は「グローバル設定」と「イベント」を解説 - Windows上で開発するための開発環境構築入門 (2012/5/16)
Windowsを使ってチームで開発している? なのにサーバOSを設定・運用した経験がない? そうなら、今すぐ学ぼう - 「コントラクト」でアプリのサンドボックスを乗り越える! (2012/5/11)
Metroスタイル・アプリはサンドボックスの中で動作する。それを乗り越えてほかのアプリと連携する仕組み「コントラクト」を解説
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -



