Описанная последовательность
действий чрезмерно упрощена, но ее цель - описать работу, выполняемую многими
Web-серверами.
Конечно же, путешествуя
по Web, легко осознать, что Web - это гораздо больше, чем набор статических
документов, которые Web-сервер посылает на запросы Web-браузеров. Для запроса
информации с сервера или предоставления информации организации-владельцу сервера
могут использоваться формы. Можно заказать товары, проверить кредитные карточки
и выполнить другие самые разнообразные деловые операции.
Для выполнения таких функций
современные Web-серверы должны не только отвечать на HTTP-запросы. Web-серверы
обычно обеспечивают два механизма взаимодействий.
Интерфейс
простого шлюза (CGI - Common Gateway Interface)
Для придания интерактивности
Web-серверу наиболее широко применяется механизм CGI. При использовании CGI
к HTTP-протоколу добавляется очень простое расширение для запроса статических
файлов.
CGI обеспечивает стандартизованный
метод запуска программы на сервере и передачи программе данных из формы на обработку.
Эти программы можно писать практически на любом языке программирования или сценариев.
Обычно используются С, Perl и Java.
Когда пользователь запрашивает
CGI-программу (возможно, при предоставлении заполненной формы или щелчке на
ссылке к программе) Web-сервер передает данные пользователя CGI-программе и
ожидает, пока программа вернет результат. Данные, возвращенные CGI-npor-раммой,
сразу же передаются клиенту тем же образом, каким возвращается браузеру содержимое
статического файла. Правильное формирование данных, возвращаемых браузеру, и
обработка непредвиденных обстоятельств входит в задачу CGI-программы.
В целом, технология CGI
разработана достаточно хорошо. Простота метода передачи данных от сервера в
CGI-программу и способ построения результирующих данных, которые программа возвращает
серверу, означает, что можно создавать несложные CGI-программы, не имея большого
опыта программирования.
Изменять и тестировать
CGI-программы несложно, так как для их написания можно использовать популярные
языки сценариев, например Perl.
То, что CGI-интерфейс является
стандартом, означает, что сценарий CGI или программа, написанная для одного
Web-сервера Linux, будет выполняться на любом другом Web-сервере Linux. Возможно,
этот сценарий или программа будут выполняться и на любом другом сервере Unix,
если они написаны на языке, интерпретируемом в соответствующих операционных
системах.
Несмотря на все преимущества,
CGI имеет серьезные недостатки, делающие его непривлекательным для некоторых
Web-сайтов. Два главных недостатка относятся к категориям безопасности и скорости.
С момента появления Web
в интерфейсе CGI были обнаружены значительные просчеты, позволяющие опытному
злоумышленнику получить доступ к системе с Web-сервером, если сценарий плохо
написан. Поэтому, использование CGI нежелательно на тех Web-серверах, где безопасность
данных является первостепенной задачей - на большинстве корпоративных Internet
и Intranet-серверов и особенно на сайтах, которые реализуют финансовые операции
и продажу по кредитным карточкам в режиме on-line.
Интерфейс CGI не очень
эффективен. Web-сервер запускает один или несколько процессов, которые отвечают
на запросы клиента. Браузер запускает дочерние процессы для CGI-программы. передает
данные новому процессу и ожидает его завершения. На загруженном сайте это может
привести к большому числу новых процессов, нуждающихся в запуске за короткий
период времени, особенно если CGI-сценарии используются интенсивно. Каждый запрос
для CGI-программы приводит к запуску отдельного процесса.
Этот неэффективный способ
обработки большого количества данных и запросов является причиной того, что
многие ведущие Web серверы снабжены собственными API (Application Program Interfaces
- Программный интерфейс приложений) для написания программ сервера.
Программный
интерфейс приложений (API - Application Program Interface)
Программные интерфейсы
приложений (API) предоставляют методы написания программ, хорошо интегрированных
в Web-сервер и не требующих новых процессов для каждого запроса.
API позволяет разрабатывать
Web-приложения для обработки большего количества запросов по сравнению с аналогичными
CGI-решениями. Кроме того, API-методы меньше критикуются в отношении безопасности.
API-программы обычно выполняют
те же функции, что и CGI-программы, например обработку информации, содержащейся
в формах, доступ к базам данных и проверку кредитных карточек.
Наибольшим недостатком
API является то, что они привязывают приложение к конкретному Web-серверу. Перенос
приложения на другой сервер может потребовать значительных изменений в программе
и, чаще всего, для больших приложений невозможен.
Помните: сервер должен быть хорошо протестирован на предмет безопасности, производительности и гибкости перед созданием на сервере большого приложения, использующего встроенный в сервер API.