добавить
ссылку в
Email
Fb
подписка
RSS
Twitter
Email
Fb

Common Gateway Interface (CGI)

Что такое «Common Gateway Interface (CGI)»?

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

По-умолчанию, все CGI-скрипты располагаются в директории cgi-bin, но допустимо их размещение и в любой другой директории.

Недостатки CGI

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

Снять часть нагрузки можно используя при разработке CGI-скрипта компилируемые языки программирования. Либо воспользоваться одной из нижеописанных альтернатив.

Альтернативы CGI

С точки зрения функциональности, CGI вполне может быть заменен одним из следующих механизмов:

  • Модули веб-сервера. Большинство веб-серверов поддерживают расширение своей функциолнальности с помощью модулей, динамически подключаемых к ним во время загрузки. В качестве примера, можно рассмотреть широкоизвестный веб-сервер Apache, большая часть функционала которого реализуется с помощью внешних модулей-плагинов;
  • Java Platform, Enterprise Edition. Java предлагает совершенно другую архитектуру построения веб-приложений. Речь идет об использовании сервлетов, которые позволяют запускать Java-код с целью генерации динамического и статического контента. Большой плюс этого подхода состоит в том, что в этом случае при вызове очередной страницы, создается не отдельный процесс, как в CGI, а отдельный поток внутри родительского процесса, что значительно уменьшает нагрузку на сервер;
  • FastCGI. Этот интерфейс позволяет отдельному процессу обрабатывать более, чем один запрос, в отличии от CGI, где под каждый запрос запускается отдельный процесс. Тем не менее, модель FastCGI очень близка по архитектуре к CGI;
  • SCGI. Очень похож на FastCGI, но гораздо более прост в реализации.
Разумеется, не бывает универсального решения для всех случаев. Каждая задача требует тщательного анализа, с целью выбора наиболее адекватного инструмента для её решения.
Похожие статьи
cgi  сервер  fastcgi  scgi