Active Server オブジェクトの作成

提供: RAD Studio
移動先: 案内検索

ASP(Active Server Page)の作成:インデックス への移動


Active Server オブジェクトは、ASP アプリケーション全体の情報や、アプリケーションがブラウザとの通信に使用する HTTP メッセージに関する情報にアクセスできる、オートメーション オブジェクトです。 AspTlb.TASPObject または AspTlb.TASPMTSObjectSystem.Win.ComObj.TAutoObject の下位オブジェクト)の下位オブジェクトで、オートメーション プロトコルをサポートし、他のアプリケーション(または Active Server Page のスクリプト)で使用できるように自身を公開しています。 Active Server オブジェクトは Active Server オブジェクト ウィザードを使って作成します。

Active Server オブジェクト プロジェクトは、必要に応じて実行可能ファイル(exe)とライブラリ(dll)のどちらにすることもできます。 ただし、アウトオブプロセス サーバーを使用する場合の欠点を知っておく必要があります。

Active Server オブジェクト ウィザードを開くには:

  1. [ファイル|新規作成|その他...]を選択します。
  2. [Delphi プロジェクト]の下の[ActiveX]フォルダを選択します。
  3. [ActiveX ライブラリ]アイコンをダブルクリックします。 これで、Active Server オブジェクトのホストとなる DLL プロジェクトが作成されます。
  4. [ファイル|新規作成|その他...]を再度選択します。
  5. [Delphi プロジェクト]フォルダで[Active Server オブジェクト]アイコンをダブルクリックします。
  6. ウィザードで、作成する Active Server オブジェクトの名前を入力し、サポートするインスタンス生成モードスレッド モデルを指定します。

これらの設定内容によって、オブジェクトを呼び出す方法が変わります。 このモデルに合わせて実装を書かなければなりません(スレッドの衝突を避けるなど)。Active Server オブジェクトが他と異なるのは、ASP アプリケーションについての情報や、Active Server Page とクライアント Web ブラウザとの間でやり取りされる HTTP メッセージについての情報にアクセスできる点です。 この情報には、ASP 組み込みオブジェクトを使用して、アクセスします。ウィザードでは、作成したオブジェクトからこれらのオブジェクトにアクセスする方法を[Active Server の種類]で設定します。

  • IIS 3 または IIS 4 を使用している場合は、[ページレベル イベント メソッド]を指定します。 このモデルを使用する場合には、オブジェクトで OnStartPage メソッドおよび OnEndPage メソッドを実装します。これらは Active Server Page の読み込み時と読み込み解除時に呼び出されます。 オブジェクトを読み込むと、オブジェクトは自動的に IScriptingContext インターフェイスを取得し、それを使って ASP 組み込みオブジェクトにアクセスします。 これらのインターフェイスは、基底クラス(TASPObject)から継承したプロパティとして公開されています。
  • IIS5 以降を使用している場合には、[オブジェクト コンテキスト]を使用します。 このモデルの場合、オブジェクトで IObjectContext インターフェイスを取得し、それを使って ASP 組み込みオブジェクトにアクセスします。 この場合も、これらのインターフェイスは継承した基底クラス(TASPMTSObject)のプロパティとして公開されています。 この後者の方法が優れている 1 つの理由は、IObjectContext で提供されている他のすべてのサービスにオブジェクトからアクセスできることです。 IObjectContext インターフェイスには、次のようにして GetObjectContext(mtx ユニットで定義されています)を呼び出すだけでアクセスできます。 ObjectContext := GetObjectContext;

作成中の Active Server オブジェクトを置く簡単な ASP ページを生成するようウィザードに指定することができます。 生成されたページには、ProgID を基にその Active Server オブジェクトを作成し、そのメソッドをどこで呼ぶことができるかを示す、最低限のスクリプト(VBScript で書かれたもの)が含まれます。 このスクリプトは、Server.CreateObject を呼び出して Active Server オブジェクトを起動します。

メモ: 生成されるテスト スクリプトでは VBScript を使用していますが、Jscript を使って Active Server Page を記述することも可能です。

ウィザードを終了すると、Active Server オブジェクトの定義が含まれた新しいユニットが現在のプロジェクトに追加されます。 さらに、タイプ ライブラリ プロジェクトが追加され、タイプ ライブラリ エディタが開きます。 これで、タイプ ライブラリ経由でインターフェイスのプロパティやメソッドを公開することができます(方法については「COM オブジェクトのインターフェイスを定義する」を参照)。オブジェクトのプロパティやメソッドの実装を記述するときには、ASP 組み込みオブジェクトを利用して、ASP アプリケーションの情報やブラウザとの通信に使われる HTTP メッセージの情報を取得することができます。

Active Server オブジェクトは、他のオートメーション オブジェクトと同様に、デュアル インターフェイスを実装しています。このインターフェイスでは、VTable による事前(コンパイル時)バインディングと IDispatch インターフェイスによる遅延(実行時)バインディングの両方をサポートしています。

関連項目