Большая часть WEB-приложений базируется на использовании внешних программ, которые управляются WEB-сервером. Применение этих программ дает возможность строить веб-приложения с подвижно (динамически) обновляемой информацией, которая хранится в БД (базах данных) либо генерирующейся, исходя из бизнес-правил решаемых задач. Common Gateway Interface (CGI) повсеместно применяется для связи веб-сервера и вызываемых программ. CGI имеет реализации и для Windows-ориентированных программ, и для приложений, которые действуют в среде Unix. Windows-модификацию интерфейса CG, называемую иначе Windows CG- интерфейсом, и описывает этот документ.
Разбираем данные HTML-форм Если данные переданы с помощью POST-метода запроса, то Windows-CGI требует, чтобы веб-сервер расшифровал их из HTML-форм. Если же они переданы как строки запроса ("query string"), которые являются частью URL, то от сервера не требуется раскодирования параметров. Существуют 2 способа, по средствам которых данные из формы могут быть переданы браузером серверу:
URL-Encoded Чаще всего используемый формат данных, которые передаются из форм. Содержание полей формы выделяется из нее. Они передаются в соответствии с спецификацией HTML 1.0, потом соединяютсяв одну строку, в которой отделяются знаком амперсанда. Вид содержания сообщения устанавливается веб-браузером в application/x-www-form-urlencoded.
Multipart form Data Для действенной загрузки на сервер файлов с использованием форм и разработан этот формат. Многостраничное MIME-сообщение - именно так передается содержание полей формы. В одной странице содержится каждое поле. Браузер в multipart/form-data устанавливает тип содержания.
" Грамотные" серверы могут (должны уметь) обрабатыватьдва этих типа сведений из форм.
Вызов CGI-программ
Для вызова CGI-программ веб-сервер применяет функцию CreateProcess(). Так как сервер должен установить время завершения CGI-программы, он с ней синхронизируется. Этому способствует функция Win32 WaitForsingleObject(), которая ожидает получение сигнала об окончании CGI-программы.
Командная строка С командной строкой такого формата:
WinCGI-exe cgi-data-file WinCGI-exe
и выполняя функцию CreateProcess(), сервер должен вызвать CGI-программу
Путь (полный) к исполняемой CGI-программе. От переменной окружения PAth или "текущего каталога" сервер не зависит. И "исполняемая" не обязательно означает .EXE файл. Это Возможно это документ, который ассоциируется с программой, реально исполняемой и описанной в WIN.INI или System Registry. cgi-data-file.
Метод вызова Для запуска процесса, который не имеет главного окна, веб-сервер использует CreateProcess(). На мониторе сервера вызванный процесс никоим образом не станет отображаться.
Отдельные серверы поддерживают режим отладки скриптов и CGI-программ. Это позволяет им приводить в действие CGI-программу как стандартный (обычный) процесс - с формированием главного окна и отображением на мониторе веб-сервера информации. Этот способ удобен на этапе отладки CGI-программ.