ТЕХНИЧЕСКИЙ ОБЗОР
То же самое, что командный файл делает для DOS или файл сценариев для Unix, CGI (Common Gateway Interface) и подобные ему языки сценариев выполняют для ресурсов World Wide Web.
Термин "Common" (общий) в названии Common Gateway Interface означает независимость от платформы: стандарт CGI, аналогично командам HTTP, извлекающим большую часть информации из серверов Web, поддерживается многими узлами, независимо от их конкретных серверных программ или операционных систем.
Страница Web - это либо предварительно созданный файл, либо последовательность строк символов на языке HTML, сгенерированных в результате интерпретации сценария. Для Web-браузера пользователя безразлично, каким образом была получена страница, но созданная с помощью CGI она может в большей степени отвечать запросам пользователя, так как ее содержимое строится с учетом контекста на основе информации, предоставляемой пользователем.
"Gateway" (шлюз) подчеркивает роль, которую CGI играет как посредническая среда между сервером и ресурсами, например такими, как база данных. Но эти ресурсы могут находиться как на той же машине, что и сервер, так и на других машинах.
"Интерфейс" указывает на то, что CGI - это не протокол типа "маленького" языка HTTP, а, скорее, набор механизмов обмена данных, управляемый любым подходящим языком. В частности, язык Perl (Practical Extraction Report Language) - популярный язык в среде Unix - стал широко использоваться для создания сценариев CGI благодаря широкому распространению Unix в качестве операционной системы узлов Internet.
Сценарии CGI можно написать и на других языках, например на REXX - наиболее распространенном для операционных сред на мэйнфреймах IBM или на других языках, изобразительные средства которых дают возможность выполнять грамматический разбор текста и создавать текстовые строки, а также интерпретировать их как команды для операционной системы (в этом состоит назначение командных файлов DOS).
Пользователи Web обычно взаимодействуют со сценарием CGI через форму на языке HTML. Для форм не требуются элементы управления ActiveX или аплеты Java, но можно использовать обычные теги HTML, которые отображаются и обслуживаются любым HTML-браузером. Точно так же извлекаются и загружаются в сервер элементы ActiveX или мини-приложения Java как "сырье"для CGI.
Средства графического интерфейса этой компонентной технологии обладают широкими возможностями для организации взаимодействия с пользователем и для предварительной обработки с клиентской стороны, что позволяет уменьшить сетевой трафик и нагрузку на Web-сервер. Сетевой трафик и производительность сервера обычно являются дефицитными ресурсами для информационных систем или систем обработки транзакций, базирующихся на Web.
Сценарии на CGI легко создать, но их непросто перенести на мощные серверы, к которым в интерактивном режиме обращается много пользователей. Как правило, при каждом обращении к CGI-сценарию загружается процесс, его интерпретирующий. Кроме того, сама интерпретация файла сценария требует интенсивного использования процессора. Языки типа REXX и Perl схожи в этом отношении с BASIC, но создают большую нагрузку на процессор из-за наличия в них операторов поиска по шаблону и операций над строками символов.
На серверах, где выполняется множество однотипных запросов, наиболее эффективный путь реализовать возможность работы в интерактивном режиме - это использовать высокопроизводительный интерфейс прикладного программирования для серверов Web. Большие затраты на программирование клиентской части окупаются общей производительностью сервера.
А интерпретируемые сценарии CGI лучше использовать для создания прототипов программ или редко применяемых пользовательских функций.
Питер Коффи
Со старшим аналитиком фирмы Advanced Technologies Питером Коффи можно связаться по адресу: peter_coffee@zd.com.
ОПРЕДЕЛЕНИЕ COMMON GATEWAY INTERFACE
Common - означает независимость от платформы: Команды HTTP (Hypertext Transport Protocol) независимо от платформы извлекают информацию из Web-серверов.
Gateway - обозначает роль, которую CGI играет в посредничестве между сервером и другими ресурсами, такими, как СУБД.
Interface - указывает на то, что CGI не протокол типа языка HTTP, а, скорее, набор механизмов обмена информацией, управляемых любым подходящим языком.