ASP スクリプト コンポーネントの実装

Windows® スクリプト コンポーネントを使用すると、Active Server Pages (ASP) の機能を組み込むことができます。ASP の機能をスクリプト コンポーネントに組み込むと、ASP ページから呼び出されるコンポーネントに、サーバー サイド スクリプトを分離することができ、ASP コードの再利用が簡単になります。たとえば、フォームを処理する ASP ページがいくつかあるとします。各 ASP ページに、すべてのフォーム処理のロジックを直接実装するよりも、すべての ASP ページから、フォーム処理のロジックを持つスクリプト コンポーネントを呼び出すように作成することができます。

ASP スクリプト コンポーネントを作成するには、「スクリプト コンポーネント ファイルの内容」に記述されているように、標準的な方法でスクリプト コンポーネントを作成します。<implements> 要素を使用して ASP インターフェイス ハンドラを実装し、<implements> 要素の type 属性を "ASP " に設定します。これにより、ResponseRequestServerSession および Application などの ASP オブジェクトへのアクセス手段が提供されます。ASP スクリプト コンポーネントでは、ASP ページ内に直接実装した場合と同じようにこれらのオブジェクトを使用できます。ASP インターフェイス ハンドラは、スクリプト コンポーネント ランタイム (Scrobj.dll) に組み込まれているので、外部インターフェイス ハンドラは必要ありません。

スクリプト コンポーネントが実行されるとき、スクリプト コンポーネントは、呼び出し元の ASP ページの名前空間と同じ名前空間を使用します。スクリプト コンポーネントは、スクリプト コンポーネント自体が呼び出し元の ASP ページにあるかのように、Request オブジェクトや Server オブジェクトにアクセスできます。スクリプト コンポーネントは、呼び出し元の ASP ページが使用しているのと同じ Session 変数や Application 変数にアクセスすることもできます。同様に、ASP スクリプト コンポーネントが Response オブジェクトのメソッドを呼び出した場合は、その結果を、呼び出し元のページで使用できます。たとえば、Response.Write を呼び出すと、その出力は呼び出し元の ASP ページに送られます。

次のコードは、プロパティとメソッドを公開する簡単な ASP スクリプト コンポーネントの例です。applicationVar1 プロパティは、Var1 と呼ばれる仮の Application 変数を利用できるようにします。AddDate メソッドは、呼び出し元の ASP ページに現在の日付を出力します。

メモ   <script> 要素内のスクリプトを隠蔽するには、CDATA セクションが必要です。詳細については、「スクリプト コンポーネント ファイルと XML 適合性」を参照してください。

<component id="ASPScriptlet">
<registration progid="ASPScriptlet"/>

<public>
   <property name="applicationVar1"/>
   <method name="AddDate"/>
</public>

<implements type="ASP"/>
<script language="VBScript">
<![CDATA[
dim applicationVar1
applicationVar1 = Application("Var1")
Sub AddDate()
   Response.Write(Date)
End Sub
]]>
</script>
</component>
次のコードは、呼び出し元の ASP ページです。
<HTML>
<HEAD>
<TITLE>スクリプト コンポーネント ASP ハンドラのテスト</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H1>ASP ハンドラのテスト</H1>
<%Set wscASP = CreateObject("ASPScriptlet")%>
<P>The current date is <%= wscASP.AddDate()%></P>

<P>The value of the Application(Var1) variable is <%= wscASP.applicationVar1%></P>

</BODY>
</HTML>