Больше,
чем извлечение файлов
Описанная последовательность
действий чрезмерно упрощена, но ее цель - описать работу, выполняемую многими
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.