Для веб-сервера IIS (Internet Information Server). был разработан специальный программный интерфейс для создания приложений расширяющих стандартные возможности веб-сервера.
ISAPI (Internet Server Application Programming Interface) – многозвенный API для IIS.
ISAPI также реализован в виде модуля mod_isapi для веб-сервера Apache. Таким образом, серверные приложения, разработанные для MS IIS могут также выполняться в Apache и других веб-серверах.
В противоположность CGI - ISAPI-приложение загружается в том же адресном пространстве, что и веб-сервер IIS. Это позволяет повысить производительность приложений благодаря сокращению издержек на запуск отдельных процессов. Однако сбой ISAPI-приложения может привести к неустойчивой работе самого веб-сервера. В 6-ой версии IIS имеется возможность запуска приложений в рамках отдельного процесса.
ISAPI включает в себя 2 компоненты: расширения и фильтры.
Таким образом, все многообразие разрабатываемых ISAPI-приложений сводится только к этим двум типам. И фильтры и расширения компилируются в DLL файлы динамически запускаемые веб-сервером.
ISAPI приложения могут разрабатываться с помощью любых языков, поддерживающих экспорт стандартных С -функций, например С, С++, Delphi. Для разработки имеется ограниченное число библиотек для разработки ISAPI приложений, например Intraweb-компоненты Delphi Pascal, специальные MFC-классы, специальная С++ библиотека серверных технологий ATL.
К наиболее важным особенностям ISAPI-расширений можно отнести следующие:
ISAPI -расширения имеют доступ ко всем функциональным возможностям IIS.
Реализуются в виде DLL-модулей, загружаемых в пространстве процесса, контролируемого IIS.
Клиенты могут обращаться к ISAPI -расширениям также как к статическим HTML страницам.
ISAPI -расширения могут быть ассоциированы с отдельными расширениями файлов, с целыми каталогами или сайтами.
ISAPI-фильтры необходимы для изменения или совершенствования функциональности IIS. Они обычно работают с IIS-сервером и фильтруют каждый запрос. Фильтры применяются для анализа и модификации входящих и исходящих потоков данных.
Фильтры также как и расширения реализуются в виде DLL файлов.
Обычно ISAPI-фильтры используются для решения следующих задач:
Изменение данных в запросе клиента (URL или заголовков).
Управление отображением URL в физические файлы.
Управление именами и паролями пользователей при анонимной или базовой аутентификации.
Анализ и модификация запросов по завершении аутентификации.
Модификация ответа веб-сервера.
Ведение журналов и анализ трафика.
Реализация собственной аутентификации.
Управление шифрацией и сжатием.
Стоит отметить, что существуют реализации в виде ISAPI-расширений для таких инструментальных средств как:
ASP (Active Server Pages )
ASP.NET
ColdFusion
Perl ISAPI (Perlis)
PHP