Разработка HTML-форм и приложений, страница 7

Однако, несмотря на все отмеченные плюсы, ISAPI-приложения имеют и недостатки, главным из которых является то, что ошибки, возникающие при выполнении ISAPI-приложений, могут приводить к нарушению работы web-сервера, т.к. эти приложения выполняются в едином адресном пространстве с web-сервером.

ISAPI-приложения делятся на 2 группы:

1) Расширения ISAPI - получают данные от браузера (например, из формы заполненной пользователем), обрабатывают эти данные и посылают ответ браузеру в виду сформированного HTML-документа;

В отличие от CGI-приложения расширение ISAPI получает данные не через переменную среду окружения и стандартный поток ввода, а при помощи специально предназначенной для этого функции. Аналогично вместо записи выходных данных в стандартный поток вывода расширение ISAPI использует специальные функции.

2) Фильтры ISAPI - предназначены для контроля всех данных, проходящих через web-сервер на уровне протокола HTTP, поэтому фильтры ISAPI можно применять для решения таких задач: шифрование или перекодировка данных, сжатие информации. Они пригодны также для создания собственных процедур подключения пользователей к системе и проверке идентификации пользователей, а также для сбора статистической информации об использовании ресурсов сервера.

Обращение к динамически подключаемой библиотеке, которая представляет собой расширение ISAPI, выполняется в HTML-документах аналогично обращению к CGI-приложению. В тегах <FORM> или <A> указывается адрес расширения ISAPI и с помощью этих форм или соответствующих гиперссылок можно осуществить обращение расширением ISAPI. Когда пользователь обращается к расширению ISAPI, соответствующая DLL загружается в адресное пространство web-сервера и становится его составной частью - это позволяет расширению ISAPI пользоваться всеми ресурсами, доступными web-серверу, что существенно увеличивает производительность. Производительность сохраняется на достаточно высоком уровне и в тех случаях, когда расширение web-сервера активно используется одновременно многими пользователями.

Пример: 20 пользователей загружают одно приложение.

CGI: создается 20 процессов (не очень хорошо);

ISAPI: в оперативную память загружается одна DLL, и все приложения обрабатываются одним расширением ISAPI (плохо в плане безопасности).