ASP.NET を使用するクライアント
.NET の最も重要な機能の 1 つとして、スタンドアロン クライアント アプリケーションの場合と同じコードを ASP.NET で実行できるという点があります。もちろん、多少の違いはあります。通常、ASP.NET ページは、HTTP の要求に対する応答として HTML コードを生成しますが、そのページ自体は、前の例とは異なり、動的にコンパイルされます。各 ASP.NET ページは、個々に解析され、その構文がチェックされます。最後に、.NET ランタイム クラスが作成され、このクラスがコンパイルされ、呼び出されます。ASP.NET は、コンパイルしたオブジェクトをキャッシュに入れるため、後続の要求はコンパイル手順を経由せずに済み、実行速度が速くなります。
既存の ASP ページのほとんどが Microsoft JScript または VBScript (Microsoft Visual Basic Scripting Edition) を使用しています。.NET Framework には JScript の .NET 互換のバージョンが提供されており、VBScript コードはごく自然に Visual Basic にアップグレードされます。次のコードでは Visual C# を使用したページを示していますが、同様のページを Visual Basic や JScript でも同じくらい簡単に記述できます。
リスト 11. ASP.NET でのクライアント (ClientASP.aspx)
<%@ Page Language="C#" Description="ASP.NET Component Test" %>
<%@ Import Namespace="CompCS"%>
<%@ Import Namespace="CompVC"%>
<%@ Import Namespace="CompVB"%>
<html>
<script language="C#" runat=server>
void Page_Load(Object sender, EventArgs EvArgs) {
String Out = "";
Int32 Count = 0;
// Iterate through the component's strings, and concatenate them.
Out = Out + "Strings from C# StringComponent<br>";
CompCS.StringComponent myCSStringComp = new
CompCS.StringComponent();
for (int index = 0; index < myCSStringComp.Count; index++) {
Out = Out + myCSStringComp.GetString(index) + "<br>";
}
Out = Out + "<br>";
// Iterate throught component's strings, and concatenate them.
Out = Out + "Strings from Visual C++ StringComponent<br>";
CompVC.StringComponent myVCStringComp = new
CompVC.StringComponent();
for (int index = 0; index < myVCStringComp.Count; index++) {
Out = Out + myVCStringComp.GetString(index) + "<br>";
}
Out = Out + "<br>";
// Iterate over component's strings and concatenate.
Out = Out + "Strings from Visual Basic StringComponent<br>";
CompVB.StringComponent myVBStringComp = new
CompVB.StringComponent();
for (int index = 0; index < myVBStringComp.Count; index++) {
Out = Out + myVBStringComp.GetString(index) + "<br>";
}
Message.InnerHtml = Out;
}
</script>
<body>
<span id="Message" runat=server/>
</body>
</html>
このコードは、out という名前の文字列を作成し、その文字列を HTML サーバー コントロールのプロパティに割り当てるという点を除いて、基本的にはスタンドアロン クライアントの例と同じコードです。
**メモ **このコードでは、使い慣れた Response.Write を使用して、HTML 出力ストリームに直接文字列を書き込むこともできます。
このページでは、Visual C# を言語として指定していますが、Visual Basic や JScript も同じくらい簡単に使用できます。
<%@ Page Language="C#" Description="ASP.NET Component Test"
ライブラリを ASP.NET にインポートする場合も、異なる点はわずかです。
<%@ Import Namespace="CompVB"%>
<%@ Import Namespace="CompCS"%>
<%@ Import Namespace="CompVC"%>
前の行では <%...%> を使用してスクリプト コードを示し、インポートする名前空間を指定しています。前述したように、アセンブリはアプリケーションの開始点の \Bin サブディレクトリに格納されている必要があります。
このページでもう 1 つ微妙に異なる部分は、次の行です。
<script language="C#" runat="server">
この行では、コードのテキストを HTML ストリームの一部としてクライアントに送り返すのではなく、サーバー上でそのコードを実行するようにサーバーに指示します。
Web フォームは、特別に次の 6 つのメソッドを認識します。
- Page_Init
- Page_Load
- Page_DataBind
- Page_PreRender
- Page_Dispose
- Page_Error
これらのメソッドは、標準ページ イベントのイベント ハンドラに自動的に関連付けられます。最も一般的に使用されるイベント ハンドラは Load のイベント ハンドラであり、その中には、サンプル プログラムのほとんどのコードが含まれています。
void Page_Load(Object sender, EventArgs EvArgs) {...}
コードの残りの部分は、非常にシンプルです。つまり、文字列を out という名前の長い文字列に連結するだけであり、このステートメントによって out が HTML コードに追加されます。
Message.innerHTML = Out
このページをテストするには、いくつかの手順が必要となります。まず、テストを行うコンピュータに次のソフトウェアをインストールしておく必要があります。
- インターネット インフォメーション サービス (IIS: Internet Information Services)
- 共通言語ランタイム
- ClientASP.aspx
- コンパイル済みの CompVC.dll、CompCS.dll、CompVB.dll の各コンポーネント
IIS が既にインストールされているコンピュータに .NET Framework SDK をインストールした場合、そのコンピュータで ASP.NET を実行できます。SDK のインストール後に IIS をインストールした場合は、SDK を再インストールする必要があります。
2 番目に、Internet Services Manager を使用して、ClientASP.aspx があるディレクトリを指す仮想ディレクトリを構成する必要があります。IIS スナップインを使用して仮想ディレクトリを作成するには、次の手順を実行します。
- ディレクトリを追加する Web サイトまたは FTP サイトを選択します。
- マウスの右ボタンをクリックして [新規作成] をポイントし、[仮想ディレクトリ] を選択します。
- 仮想ディレクトリの作成ウィザードを使用して、作業を完了します。
NTFS ファイル システムを使用している場合は、Windows エクスプローラで該当ディレクトリを右クリックし、[共有] をクリックし、[Web 共有] タブをクリックして、仮想ディレクトリを作成することもできます。詳細については、IIS がインストールされているコンピュータ上で https://localhost/iisHelp/ にある IIS ドキュメントの「仮想ディレクトリを作成する」を参照してください。
また、仮想ディレクトリは、CompTest ディレクトリにある CreateVRoot.vbs VBScript ファイルを実行することによっても作成できます。
3 番目に、コンパイル済みコンポーネント DLL は、アプリケーションの仮想ディレクトリの開始点の下の \Bin サブディレクトリに格納されている必要があります。
すべてが正しく構成されたと想定して、ファイルを https://localhost/NetSDK/PlatformIntroduction/ClientASP.aspx URL で実行すると、Internet Explorer のウィンドウに次のように表示されます。