ISAPIの利用方法
ISAPI(Internet Services API)(Windowsのみ対応)
ISAPIを利用すると、従来のCGIプログラムより高速に動作するWebベースのアプリケーションを開発できます。その理由は、ISAPIアプリケーションの方がインターネットサービスと高度に統合されているためです。これにより、動的なWebアプリケーション(またはスクリプト)を使用して、ご利用のFirstClassシステムを拡張できます。ご利用のシステム上で実行できるオブジェクトを作成するISAPIスクリプトは、任意の言語で記述できます。例えば、WindowsではC++、Visual Basic、またはPerlスクリプトを使用できます。
CGIプログラムと大きく異なる点は、ISAPIはいったんメモリに読み込まれると、サーバに常駐することです。反対に、CGIプログラムは、ユーザのWebブラウザから各アプリケーションが要求されるとメモリに読み込まれ、そのプログラムが実行されるとメモリから削除されます。ISAPIプログラムがCGIプログラムより高速に動作することが多いのはこのためです。
AddHandlerドキュメントを利用したISAPIアプリケーションの設定
AddHandlerドキュメントは、インターネットサービスが処理する特定のHTTP要求に対して追加のプログラムを実行する方法を定義するドキュメントです。Webの要求と追加プログラムとの関連付けを定義するには、ファイルによる関連付けと、Content-Typeによる関連付けの2つの方法があります。AddHandlerドキュメントで指定したファイルの関連付けは、OSで設定されているファイルの関連付けより優先的に適用されます。Content-Typeによる関連付けは、各HTTP要求のContent-TypeヘッダをAddHandlerドキュメントで指定した内容と比較することで行われます。要求URLの最後にあるファイル拡張子は利用しません。
AddHandlerドキュメントは次の理由で必要になります。
・一部のインタプリタには、インストール時にファイルの関連付けを自動で設定しないものがある
・一部のOSでは、ファイルの関連付けを簡単に管理できない
・HTTP要求の種類によっては、[cgi-bin]フォルダ内にダミーのドキュメントを作成しなくても処理できる
AddHandlerドキュメントは管理者デスクトップの[Internet Services]フォルダ内にあり、新規インストールまたはアップグレード時に自動的に作られます。このドキュメントでは、AddHandlerとAddURLHandlerという2つのコマンドを利用できます。どちらのコマンドでも、複数の行を記述して、コメントと空白行を使用して説明を加えたり読みやすくしたりできます。コマンド内の行は、特定の順序に従って記述する必要はありません。
AddHandlerコマンドの構文は以下の通りです。
<AddHandler .拡張子>
Site:サイト名または*
If-Content-Type:MIMEタイプ/サブタイプ
ISAPI.Ext:読み込むISAPIのDLLファイルのフルパス
exec:実行するCGIのフルパス
</AddHandler>
このうち、
・拡張子は、処理するファイルの拡張子です。
例:
・.php
・.pl
・MIMEタイプ/サブタイプは、HTTP要求内で照合するContent Typeです。
例:
application/vnd.syncml+wbxml
If-Content-Typeはオプションで、指定すると.拡張子より優先的に適用されます。その場合は、.拡張子を.dummyに設定して、ドキュメントを見やすくしておくことをお勧めします。
・ISAPI.Extは、(対応しているISAPIフィルタではなく)ISAPI拡張を実行するために使用します。
・execは、実行ファイルを起動するために使用し、Windowsでファイルの関連付けを行わなくても済むようになります。また、(PHPなど)対応していないさまざまな種類のスクリプトを実行するためにも使用します。
注意
1つのAddHandlerコマンド内で、ISAPI.Extとexecはどちらか一方しか記述できず、両方を記述することはできません。
AddURLHandlerコマンドの構文は以下の通りです。
<AddURLHandler /URL/参照先>
Site:サイト名または*
Templates:テンプレートフォルダ名
</AddURLHandler>
インターネットサービスは、このサイトに一致する/URL/参照先の要求を受け取ると、指定されたテンプレートフォルダを使用してその要求を処理します。
AddURLHandlerコマンドを利用すると、インターネットサービスで1つのWebサイトに異なる複数の表示方法を簡単に設定できます。例えば、動的な情報だけを提供するオンラインニュースなどのWebサイトで、HTMLではなくRSSでコンテンツを配信するとします。その場合に、RSSリーダからの要求をHTMLのセットとは異なるテンプレートセットに誘導できます。
Rewriteコマンドの利用
Rewriteコマンドは以下の目的で利用できます。
・複雑なCGIアプリケーション(ブログ機能を提供するPerl/PHPスクリプトなど)で、CGIファイルを大幅に書き換えることなくURLを変更できるようにする。
・異なるテンプレートセットを呼び出して、会議室やフォルダに表示設定を追加する。
Rewriteコマンドの構文は以下の通りです。
<AddURLHandler [~] /URL/>
Site:サイト名または*
Templates:テンプレートフォルダ名
Content-Type:<ISAPI拡張機能が返すコンテンツのMIMEタイプ>
Index:Indexページの別名
Rewrite:/置き換えるURL/
</AddURLHandler>
このうち、
・[~] はオブジョンの文字で、/URL/がタグを含む正規表現であることを示します。
・Content-Typeは通常、CGIかISAPIの拡張機能によって設定され、デフォルトはtext/htmlです。
ただし、Content-typeの値がデフォルトとは異なる場合や、URLの処理にtext/htmlを返さないテンプレートを使用する場合は、Content-typeを指定して、ブラウザが正しく解釈できるようにしてください。
・Indexを利用すると、/URL/がコンテナを参照する場合に、異なる名前のIndexファイルを使用できるようになります。
・Rewriteを利用すると、CGIでLocation:ヘッダを利用する場合と同じように、ブラウザを異なる場所にリダイレクトできるようになります。
Rewriteコマンドの例
サイト上にある[News]という名の会議室の内容をユーザにRSS配信したい場合、以下のAddURLHandler構文をISAPIドキュメントに追加できます。
<AddURLHandler ~ /News/rss>
Site: *
Templates:.rsstemplates
Content-Type:<the Rich Site Summary (RSS) content type>
Rewrite:/News/
</AddURLHandler>
タグを利用する正規表現のURLがある場合は、置き換えるURLにそのタグ付きテキストを指定できます。これは、サイト上に「架空の」URL空間を作りたい場合に有効です。
<AddURLHandler ~ /Mobile/(.*)>
Site: *
Templates:mobile.templates
Rewrite: /\1
</AddURLHandler>
詳細情報
|