4.7. ISAPI

Для веб-сервера 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-расширений можно отнести следующие:

  1. ISAPI -расширения имеют доступ ко всем функциональным возможностям IIS.

  2. Реализуются в виде DLL-модулей, загружаемых в пространстве процесса, контролируемого IIS.

  3. Клиенты могут обращаться к ISAPI -расширениям также как к статическим HTML страницам.

  4. ISAPI -расширения могут быть ассоциированы с отдельными расширениями файлов, с целыми каталогами или сайтами.

ISAPI-фильтры необходимы для изменения или совершенствования функциональности IIS. Они обычно работают с IIS-сервером и фильтруют каждый запрос. Фильтры применяются для анализа и модификации входящих и исходящих потоков данных.

Фильтры также как и расширения реализуются в виде DLL файлов.

Обычно ISAPI-фильтры используются для решения следующих задач:

  1. Изменение данных в запросе клиента (URL или заголовков).

  2. Управление отображением URL в физические файлы.

  3. Управление именами и паролями пользователей при анонимной или базовой аутентификации.

  4. Анализ и модификация запросов по завершении аутентификации.

  5. Модификация ответа веб-сервера.

  6. Ведение журналов и анализ трафика.

  7. Реализация собственной аутентификации.

  8. Управление шифрацией и сжатием.

Стоит отметить, что существуют реализации в виде ISAPI-расширений для таких инструментальных средств как:

  1. ASP (Active Server Pages )

  2. ASP.NET

  3. ColdFusion

  4. Perl ISAPI (Perlis)

  5. PHP