豊田 孝
図1●宣言部と実装部を同一のASMXファイル内に記述したWebサービス・クラス |
本日は,Webサービス・クラスをASMXファイルではなく,独立したファイルとして実装します。宣言部と実装部を切り離す,このような開発方式は,コードビハインド・プログラミングと呼ばれています。コードビハインド・プログラミングにはいろいろな方法があるのですが,今回は,もっとも単純な方法を紹介します。
それではさっそく,Webサービス宣言部から作成しましょう。
Webサービス・クラスの宣言
Webサービス・クラスの宣言は,これまでと同じように,ASMXファイル内で次のように行います。
<%@ WebService Language = "C#" Class = "No9csClass" %>
この宣言は,次のような意味を持っています。
“C#プログラミング言語で実装したNo9csClassクラスを,Webサービスとしてインターネットに公開する”
ASMXファイルにはこの1行だけを記述し,公開するNo9csClassクラスは別ファイルに実装します。
Webサービス・クラスの実装
インターネットから公開するWebサービス・クラスは,宣言部に指定したプログラミング言語で別ファイルに実装します(リスト1)。ここでは,Visual C# .NETの実装例を示します。
リスト1●公開するNo9csClassクラスをASMXファイルとは別のファイルに実装する |
using System; using System.Web.Services; using System.Web; [WebServiceAttribute(Namespace="http://ITPro.com/toyotawebservices/", Description= "IT Pro連載第9回:コードビハインド・プログラミング", Name="No9ServiceCS")] public class No9csClass : WebService { [WebMethodAttribute(BufferResponse=true, CacheDuration = 5, Description="Display User Agent Info", MessageName = "TryIt!")] public String MyWebService() { HttpContext hc = Context; HttpRequest hr = hc.Request; String ua = hr.UserAgent; String retStr = String.Concat("No9csService: ", ua); return retStr; } } |
ご覧のように,基本的には,これまでのASMXファイル内の実装部を切り取り,別のファイルに貼り付けるだけです。実装部を貼り付けたファイルは,拡張子csを持つファイルとして保存します。ここでは,AdvancedNo9cs.csファイルとして保存することにします。
ファイルを保存し,次のようにコンパイルします。
c:\itpro\cs\bin\>csc /target:library AdvancedNo9cs.cs
CSCはVisual C# .NETコンパイラであり,/targetは作成するプログラムの種類を指定するコンパイラ・オプションです。この場合,拡張子dllを持つライブラリ・ファイルを作成するように指示しています。ライブラリ・ファイルは,ここでは,公開されるWebサービス・クラスを収容するファイルである,と考えておいてください。
図2●サンプル・プログラムの実行結果 |
ご覧のように,ユーザー・エージェント情報が無事に返されます。なお,宣言部を次のように記述すると,パフォーマンスが改善されます。
<%@ WebService Language = "C#" Class = "No9csClass, AdvancedNo9cs" %>
Class属性を見ると分かるように,クラス名No9csClassに加えて,それを実装するAdvancedNo9csファイル名を指定しています(拡張子DLLを指定する必要はありません)。特定のファイル名を指定すれば,ASP .NET側は目的のファイルを効率的に検索できるようになります。
コードビハインドのメリット
コードビハインド・プログラミングを採用する最大のメリットは,“コンパイル・エラーを事前に検出できる”ということです。従来のように,宣言部と実装部を同一のASMXファイルに記述している場合,ASMXファイルがアクセスされるまでは実装部のエラーを検出できません。宣言部と実装部をコードビハインドにより分離しておけば,実装部を公開前にテストできます。
これ以外にも,例えば,追加作成したBINディレクトリやクラス実装ファイルにセキュリティを設定できる,などの運営,管理上の柔軟性が増すことなども挙げることができます。
後日お時間のあるときにいろいろ試してください。必要なファイルはこちらからダウンロードできます。なお,ファイルをダウンロードすると,その中に拡張子optを持つファイルが含まれています。このファイルは,コンパイラ・オプションを定義していますから,次のようにコンパイラに渡します。
c:\itpro\cs\bin\>csc @No9cs.opt
c:\itpro\vb\bin\>vbc @No9vb.opt
本日は以上で終了です。次回またお会いいたしましょう。ごきげんよう!