インターネットサーバーアプリケーションプログラミングインターフェイス(ISAPI)は、MicrosoftのWindowsベースのWebサーバーサービス群であるInternet Information Services(IIS)のn層APIです。IISとISAPIの最も代表的なアプリケーションは、MicrosoftのWebサーバーです。
ISAPIはApacheのmod_isapiモジュールにも実装されており、MicrosoftのIIS向けに作成されたサーバーサイドWebアプリケーションをApacheで使用できるようになりました。Zeus Web Serverなどの他のサードパーティ製WebサーバーもISAPIインターフェースを提供しています。
マイクロソフトのWebサーバーアプリケーションソフトウェアであるInternet Information Services(IIS)は、多数の構成可能な「サブアプリケーション」で構成されています。ASP.NETはIISのサブアプリケーションの1つであり、プログラマーはMicrosoft .NET CLRでサポートされている任意のプログラミング言語(VB.NET、C#、F#)でWebアプリケーションを作成できます。ISAPIははるかに低レベルのプログラミングシステムであり、シンプルさを犠牲にする代わりに、はるかに優れたパフォーマンスを提供します。
ISAPI は、拡張機能とフィルタの 2 つのコンポーネントで構成されています。[ 1 ]これらは、ISAPI を使用して開発できるアプリケーションの 2 つのタイプのみです。フィルタと拡張機能はどちらも DLL ファイルにコンパイルされ、Web サーバーで実行するために IIS に登録されます。
ISAPIアプリケーションは、標準C関数のエクスポートを可能にする言語であれば、C、C++、Delphiなど、どのような言語でも記述できます。ISAPIアプリケーションの開発を容易にするライブラリがいくつかあり、Delphi PascalではWebアプリケーション開発用のIntrawebコンポーネントが利用できます。MFCには ISAPIアプリケーション開発用のクラスが含まれています。さらに、 ISAPIアプリケーション開発専用のC++ライブラリを含むATL Serverテクノロジーもあります。
ISAPI拡張機能は、IIS上で動作する真のアプリケーションです。IISが提供するすべての機能にアクセスできます。ISAPI拡張機能は、 IISによって制御されるプロセスにロードされるDLLとして実装されます。クライアントは、静的なHTMLページにアクセスするのと同じ方法でISAPI拡張機能にアクセスできます。特定のファイル拡張子、フォルダ全体、またはサイト全体をISAPI拡張機能で処理するようにマッピングできます。
ISAPIフィルタは、IISが提供する機能を変更または拡張するために使用されます。フィルタは常にIISサーバー上で実行され、処理が必要なリクエストが見つかるまで、すべてのリクエストをフィルタリングします。フィルタは、受信データストリームと送信データストリームの両方を検査および変更するようにプログラムできます。フィルタの呼び出し順序は、内部でプログラムされ、外部で構成された優先順位によって決定されます。
フィルタはDLLとして実装され、IISサーバー上でサイトレベルまたはグローバルレベル(つまり、IISサーバー上のすべてのサイトに適用)で登録できます。フィルタはワーカープロセスが起動されると初期化され、インストールされているサイトへのすべてのリクエストをリッスンします。
ISAPIフィルタが実行する一般的なタスクには、以下が含まれます。
以下は、ISAPI拡張機能として実装された一般的なISAPIアプリケーションの一覧です。
ISAPIアプリケーションは、 Windows DLLを生成できる開発ツールであればどれでも開発できます。ISAPIフレームワークアプリケーションを生成するためのウィザードは、Visual C++ 4.0以降のMicrosoft開発ツールで利用可能です。