Больше, чем извлечение файлов

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