Определение

Common Gateway Interface (CGI) — стандарт для связи прикладных программ с Web-сервером. Данные из формы, заполненной пользователем на странице Web, передаются CGI-приложению, которое может затем послать динамически сгенерированные компоненты информационного наполнения Web обратно браузеру пользователя.

CGI — далеко не новая технология. Каковы перспективы ее применения в Web?

Когда десять лет назад создавалась World Wide Web, она в первую очередь предназначалась для простого отображения документов.

Но практически с самого начала разработчики Web-ресурсов стремились найти способ передавать данные на Web-сервер из браузера пользователя, к примеру имя и пароль или данные для поиска.

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

Завершив обработку, программа может вернуть браузеру пользователя ранее существовавшую Web-страницу, новую страницу, сгенерированную «на лету», или информацию любого иного типа, которая может воспроизводиться браузером.

Благодаря гибкости интерфейса CGI с ним может использоваться практически любая программа, способная работать на Web-сервере и воспринимать данные в формате командной строки. К таковым относятся программы, написанные на Си, C++, Perl, Visual Basic и даже на разнообразных языках командных оболочек для ОС Unix.

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

Специальные программы

Серьезным недостатком программ, написанных в расчете на CGI, считают то, что, как правило, их нельзя использовать повторно при изменении конфигурации Web-узлов.

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

Подходящее решение

Вышесказанное вовсе не означает, что сервер приложений подходит для всех случаев жизни. CGI — прекрасное решение для сети intranet, где обычно уровень трафика ниже, чем на внешних узлах. Это важно, поскольку обычно небольшим организациям и подразделениям не по карману заплатить дополнительно от 15 до 100 тыс. долл. за сервер приложений, в то время как поддержка CGI встраивается во все Web-серверы.

Программы CGI могут быть написаны практически на любом языке, к тому же CGI-интерфейс очень прост, так что разработчики Web могут соорудить простые утилиты CGI, что называется, на скорую руку.

Благодаря таким свойствам CGI превращается в практичное средство, используемое в экстренных ситуациях и для создания утилит, которые будут редко применяться на коммерческих Web-узлах.

«CGI не утратил своего значения, — считает Стив Робинс, аналитик компании The Yankee Group. — Но есть немало иных, более элегантных и эффективных способов интеграции с другими системами».

Иные возможности

Наряду с серверами приложений к альтернативным механизмам интеграции относятся Active Server Pages — универсальный сервер приложений, встроенный в Web-сервер Internet Informational Server компании Microsoft, а также сервлеты Java, которые представляют собой небольшие Java-программы, запускаемые на сервере.

«CGI как молоток, — заметил Рей Валдес, аналитик компании GartnerGroup. — Крупные Web-узлы могут использовать очень тонкие инструменты, но для авральной работы без молотка не обойтись».

Как работает CGI
  1. Пользователь вносит данные в форму на Web-узле
  2. Данные передаются на Web-сервер, который запускает новую программу для обработки данных пользователя. Для каждой формы, заполненной пользователем, запускается своя программа
  3. Программа обрабатывает данные и может взаимодействовать с другими программами или базами данных на сервере
  4. Программа возвращает уже существовавшую Web-страницу, вновь сгенерированную Web-страницу, изображение или другой элемент информационного наполнения Web браузеру пользователя