Advertising banner:
 
 
 A159
 
関連トピック






ISAPI(Internet Services API−Windowsのみ対応)

ISAPIを利用すると、従来のCGIプログラムより高速に動作するWebベースのアプリケーションを開発することができます。その理由は、ISAPIアプリケーションの方がインターネットサービスとの統合度合いが高いためです。これにより、動的なWebアプリケーション(あるいはスクリプト)を 使用して、ご利用のFirstClassシステムを拡張することができます。ISAPIスクリプトを任意の言語で記述することによって、ご利用のシステム上で実行できるオブジェクトを作成することができます。例えば、C++、Visual Basic、あるいはPerlスクリプトをWindows上で使用して作成することができます。

SAPIプログラムとCGIプログラムで大きく異なる点は、ISAPIは最初にメモリに読み込まれた後、サーバに常駐することです。反対に、CGIプログラムは、ユーザのWebブラウザから各アプリケーションが要求されるとメモリに読み込まれ、そのプログラムが実行されるとメモリから削除されます 。ISAPIプログラムがCGIプログラムより高速に動作することが多いのはこのためです。

20070120_190902_0.png

20070120_190910_1.png





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など)対応していない様々な種類のスクリプトを実行するためにも使用されます。

20070115_164502_0.png 注意

つのAddHandlerコマンド内で、ISAPI.Extexecは どちらか一方しか記述できず、両方を記述することはできません。

AddURLHandlerコマンドの構文は以下の通りです。

<AddURLHandler /URL/参照先>

Site: サイト名または*

Templates: テンプレートフォルダ名

</AddURLHandler>

インターネットサービスは、このサイトに一致する/URL/参照先の要求を受け取ると、指定されたテンプレートフォルダを使用してその要求を処理します。

AddURLHandlerコマンドを利用すると、インターネットサービスはつのWebサイトに異なる複数の表示方法を簡単に設定できます。例えば、動的な情報だけを提供するオンラインニュースなどのWebサイトでは、HTMLではなくRSSでコンテンツを配信することがあります。その場合に、RSSリー ダからの要求をHTMLのセットとは異なるテンプレートセットに誘導することができます。

Rewriteコマンドの利用

Rewriteコマンドは以下の目的で利用できます。

(例えば、ブログ機能を提供するPerl/PHPスクリプトなど)複雑なCGIアプリケーションで、CGIファイルを大幅に書き換えることなくURLを変更できるようにする。
・異なるテンプレートセットを呼び出して、会議室やフォルダに表示設定を追加する。

Rewriteコマンドの構文は以下の通りです。

<AddURLHandler [~] /URL/>

Site: サイト名または*

Templates: テンプレートフォルダ名

Content-Type: <ISAPI拡張機能が返すコンテンツのMIMEタイプ>

Index:Indexページの別名

Rewrite: /置き換えるURL/

</AddURLHandler>

このうち、

[~] はオブジョンの文字で、/URL/がタグを含む正規表現であることを示します。

Content-TypeはCGIISAPIの拡張機能によって設定されるのが普通で、デフォルトはtext/htmlです。

ただし、Content-typeの値がデフォルトとは異なる場合や、URLの処理にtext/htmlを返さないテンプレートを使用する場合は、Content-typeを指定して、ブラウザが正しく解釈できるようにしてください。

Indexを利用すると、/URL/がコンテナを参照する場合に、異なる名前のIndexファイルを使用できるようになります。

Rewriteを利用すると、CGILocation:ヘッダを利用する場合と同じように、ブラウザを異なる場所にリダイレクトできるようになります。

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>



hirosue Shino Web Site