ASP講座シリーズ(7) コンポーネントとオブジェクトの使い方
著者:Eve Cole
更新時間:2009-05-30 19:59:15
ActiveX コンポーネントは、強力な Web アプリケーションを構築するための鍵です。コンポーネントは、タスクを実行するスクリプトで使用されるオブジェクトを提供します。 ASP は、スクリプトで使用できる組み込みオブジェクトも提供します。このトピックでは、コンポーネントによって提供されるオブジェクトと、Active Server Pages によって直接提供される組み込みオブジェクトの使用方法について説明します。
コンポーネントについて
ActiveX コンポーネントは、1 つまたは複数のタスクを実行するコードを含むファイルです。コンポーネントは一般的なタスクを実行できるため、それらのタスクを実行するためのコードを自分で作成する必要はありません。たとえば、ティッカー コンポーネントは Web ページに最新の株価を表示できます。 ASP には、データベース アクセス コンポーネントなど、すぐに使用できるコンポーネントが付属しています。サードパーティ開発者からオプションのコンポーネントを入手します。または、独自のコンポーネントを作成することもできます。
コンポーネントは、スクリプトおよび Web ベースのアプリケーションの基本的な構成要素として利用できます。コンポーネントによって提供されるオブジェクトにアクセスする方法を知っておくだけで済みます。初心者のスクリプト作成者でも、コンポーネントがどのように機能するかを理解していなくてもスクリプトを作成できます。要約すると、コンポーネントを使用すると、プログラミングを学習しなくても強力なスクリプトを作成できます。
Web アプリケーション開発者の場合は、コンポーネントを作成してビジネス ロジックをカプセル化できます。たとえば、製品の消費税を計算するコンポーネントを作成できます。このコンポーネントは、販売注文を処理するスクリプトで呼び出すことができます。注文処理中に税率を個別に計算すると、消費税がどこかで変更された場合に、処理プロセス全体を変更することなく、コンポーネントのみを更新できます。コンポーネントは、C、C++、Java、Visual Basic など、コンポーネント オブジェクト モデル (COM) をサポートする任意の言語で作成できます。 COM プログラミングに精通している場合は、ActiveX コンポーネントがオートメーション サーバーであることがわかります。 Web サーバー上で実行する場合、ActiveX コンポーネントには、Visual Basic の MsgBox 関数などのグラフィカル ユーザー インターフェイス要素を含めることはできません。
コンポーネントは再利用可能です。コンポーネントを Web サーバーにインストールすると、ASP スクリプト、ISAPI アプリケーション、サーバー上の別のコンポーネント、または別の COM 互換言語で記述されたプログラムから呼び出すことができます。
コンポーネント オブジェクトを生成するインスタンス コンポーネントは、ダイナミック リンク ライブラリ (.dll) または実行可能ファイル (.exe) に含まれる実行可能コードです。コンポーネントは 1 つ以上のオブジェクトとそのメソッドおよびプロパティを提供できます。コンポーネントによって提供されるオブジェクトを使用するには、オブジェクトのインスタンスを作成し、この新しいインスタンスに変数名を割り当てます。オブジェクトのインスタンスは、ASP の Server.CreateObject メソッドを使用して作成できます。次に、スクリプト言語の変数割り当て命令を使用して、オブジェクト インスタンスに名前を付けます。オブジェクト インスタンスを作成するときは、インスタンスの登録名 (PROGID) を指定する必要があります。 ASP によって提供される基本コンポーネントについては、オブジェクトの PROGID をリファレンス ページから取得できます。
たとえば、ASP の Ad Rotator コンポーネントはグラフィック広告をループします。 Ad Rotator コンポーネントは、PROGID が「MSWC.AdRotator」である Ad Rotator というオブジェクトを提供します。 Ad Rotator オブジェクトのインスタンスを作成するには、次のコマンドを使用します。
VBスクリプト:
<% Set MyAds = Server.CreateObject("MSWC.AdRotator") %>
JScript:
<% var MyAds = Server.CreateObject("MSWC.AdRotator") %>
VBScript や JScript にすでに精通している場合は、VBScript の CreateObject や JScript の New など、新しいオブジェクト インスタンスを作成するためのスクリプト言語関数がないことに気づくでしょう。 ASP の Server.CreateObject メソッドを使用する必要があります。そうしないと、ASP はスクリプト言語でのオブジェクトの使用を追跡できません。
オブジェクト インスタンスは、HTML の <OBJECT> タグを使用して作成することもできます。 RUNAT 属性のサーバー値を指定し、スクリプト言語で使用される変数名の ID 属性グループも指定する必要があります。オブジェクトは、登録名 (PROGID) または登録番号 (CLSID) を使用して識別できます。次の例では、登録名 (PROGID) を使用して Ad Rotator オブジェクトのインスタンスを作成します。
<OBJECT RUNAT=サーバー ID=MyAd PROGID="MSWC.AdRotator"></OBJECT>
次の例では、登録番号 (CLSID) を使用して Ad Rotator オブジェクトのインスタンスを作成します。
<OBJECT RUNAT=サーバー ID=MyAd
CLASSID="Clsid:1621F7C0-60AC-11CF-9427-444553540000"></OBJECT>
Java クラスからのオブジェクトの作成 Java 言語で記述された ActiveX コンポーネントは、DLL ではなく Java クラスとして送信できます。 Server.CreateObject を使用して Java クラス オブジェクトのインスタンスを作成するには、Javareg プログラムを使用してクラスを COM コンポーネントとして登録する必要があります。これで、PROGID または CLSID を指定して Server.CreateObject を使用できるようになります。
オブジェクト インスタンスが ASP 組み込みオブジェクトにアクセスしてトランザクションに参加する必要がない場合は、Java モニタが提供するより単純なメカニズムを使用して Java クラスを直接呼び出すことができます。 Java モニターを使用するには、Java 2.0 用の Microsoft 仮想マシン (Internet Information Server および Personal Web Server のディストリビューションによって提供される) を使用する必要があります。
モニターを使用してオブジェクトをインスタンス化する場合は、VBScript または JScript の GetObject コマンドを使用し、Java クラスの完全名を java:classname の形式で指定する必要があります。次の VBScript の例では、Java Date オブジェクトのインスタンスを生成します。
<%
薄暗い日付
日付を設定 = GetObject("java:java.util.Date")
%>
<p> 日付は <%= date.toString() %> です。
Server.CreateObject の代わりに GetObject を呼び出して生成されたオブジェクトは、ASP 組み込みオブジェクトにアクセスできず、トランザクションに参加できません。
ASP 組み込みオブジェクトの使用
ASP は、タスクを実行する組み込みオブジェクトを提供します。たとえば、Request オブジェクトには HTML テーブルからの参照が保存されます。
オブジェクト メソッドの呼び出し メソッドは、オブジェクト上で、またはオブジェクトを使用して実行できるアクティビティです。メソッドを呼び出すための一般的な構文は次のとおりです。
オブジェクト.メソッドのパラメータ
パラメータはメソッドごとに異なります。
たとえば、次の手順に従って、Response 組み込みオブジェクトの Write メソッドを使用してブラウザに情報を送信できます。
<% Response.Write "Hello World" %>
一部のスクリプト言語は Object.Method 構文をサポートしていないことに注意してください。使用している言語がこの構文をサポートしていない場合は、その言語をプライマリ スクリプト言語として使用するためにレジストリにエントリを作成する必要があります。
オブジェクトのプロパティの設定 プロパティは、オブジェクトを説明する特性値です。プロパティは、オブジェクトの特性 (オブジェクト タイプなど) またはオブジェクトの状態 (有効または無効など) を定義します。一般的な構文は次のとおりです。
オブジェクト.プロパティ
プロパティ値の読み取りと設定が可能です。一部のオブジェクトでは、新しいプロパティを追加することもできます。
たとえば、Ad Rotator コンポーネントには Border プロパティがあり、広告に枠線があるかどうかと枠線の太さを指定します。次の式は境界線を指定しません。
<% MyAds.Border = 0 %>
ASP 出力ディレクティブを使用して、特定のプロパティの現在の値を表示できます。たとえば、ブラウザがまだサーバーに接続している場合、次のコマンドは TRUE を返します。
<%= Response.IsClientConnected %>