.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に含まれている各種ツールやドキュメント、サンプル・プログラム、チュートリアルについて解説する予定だ。
- 第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用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|