CGI (Common Gateway Interface, общий шлюзовой интерфейс) - за этими словами скрывается интерфейс взаимодействия внешних программ с web-серверами.
Эта аббревиатура не так популярна уже, как, скажем, лет десять назад, однако это вовсе не означает смерть CGI. Просто "чистый" CGI вытеснили такие серверные технологии, как PHP, ASP/ASP.NET, Perl, Ruby on Rails, Lasso и другие. Впрочем, давайте обо всём по порядку...
CGI - это "Common Gateway Interface", или "общий шлюзовой интерфейс" по-русски. За этими словами скрывается интерфейс взаимодействия внешних программ с web-серверами (о том, что такое web-сервер, можно узнать в "КВ" №17 за 2008-й год).
Интерфейс CGI имеет одну крайне интересную и, вместе с тем, очень и очень полезную для программистов особенность: он разработан специально именно таким образом, чтобы писать приложения, взаимодействующие через данный интерфейс с web-сервером, можно было если не на любом, то на практически любом языке программирования, включая и довольно экзотические варианты. Такое свойство интерфейса CGI позволяет создавать вспомогательные программы для web-серверов именно на том языке программирования, которым программист владеет лучше всего, и, значит, потенциально такие программы лучше, чем если бы использовался специфический язык, с которым программист знаком хуже.
Впрочем, надо сказать, что в настоящее время число программ, создаваемых для взаимодействия с web-сервером непосредственно через интерфейс CGI, сравнительно невелико. Большая часть программ, работающих на стороне сервера, пишется на скриптовых языках, интерпретаторы которых устанавливаются и работают уже как CGI-приложения. Причина этого состоит в том, что бинарные1 CGI-приложения способны повредить web-сервер при каких-либо сбоях в них, что может привести не только к недоступности на некоторое время сайтов, находящихся под управлением этого web-сервера, но и к утечке конфиденциальных данных, что совсем уж не здорово. В случае, когда программа выполняется интерпретатором, бороться с последствиями ошибок в ней куда как проще. При этом мощность современных серверов позволяет спокойно использовать интерпретируемые программы, не опасаясь серьёзных потерь в производительности.
Помимо, собственно, CGI, имеются другие альтернативные интерфейсы взаимодействия с web-сервера, более безопасные и быстрые. К подобным интерфейсам относятся, прежде всего, такие всемирно известные интерфейсы, как FastCGI и SCGI. В то же время, по своей идеологии эти интерфейсы имеют от CGI самые минимальные отличия.
Вадим СТАНКЕВИЧ
1 См. "Что такое исполняемые файлы и какими они бывают" ("КВ" №20)
Горячие темы