Главная | Наши услуги | Портфолио | Контактная информация

Главная arrow Разработка сайта arrow Web-узлы

Web-узлы

Чем большую популярность завоевывает Web, тем сложнее становятся Web-узлы. Статические гипертекстовые страницы, подготовленные средствами HTML, встречаются все реже. Практически на каждой домашней странице можно встретить счетчик посещений или часы; большинство сайтов позволяют получить доступ к статистике посещения как отдельных страниц, так и всей их совокупности; многие организации включают в свои страницы формы регистрации пользователей или формы заказов на услуги. Все перечисленные функции не реализованы в Web-серверах. И счетчик посещений, и работа с формой предполагают использование внешней по отношению к серверу программы. Работа Web-мастера все в большей степени состоит из программирования и все в меньшей - из подготовки HTML-страниц. Еще более актуальной тема программирования в Web становится при обсуждении способов создания сетей intranet. Дело в том, что в этом случае сопряжение Web-сервера с системами управления базами данных имеет решающую роль, и без программирования здесь просто не обойтись.
При разработке прикладных программ для Web, кроме столь популярного языка программирования Java можно использовать три технологии: CGI-скрипты, FCGI-приложения и API-интерфейсы. Каждый из этих подходов имеет свои преимущества, равно как и определенные недостатки. Рассмотрим их более подробно.
Common Gateway Interface
Спецификация CGI, разработанная в NCSA, впервые была включена в свободнораспространяемые серверы NCSA. В то время это был колоссальный шаг вперед по сравнению с механизмами подключения внешних программ к серверу CERN. Разработчики сайтов получили простую возможность включить в свои страницы практически все локальные информационные ресурсы организации и таким образом обеспечить удаленный доступ к ним по сети.
Интересно, что параллельно с появлением спецификации CGI в стандарт HTML были введены формы. Собственно, формы и CGI - две стороны одной медали. И формы, и CGI были первоначально предназначены для обмена данными между прикладной программой и программой просмотра гипертекстовых страниц. При этом CGI предполагалось использовать не только в Web, но и для расширения возможностей других информационных технологий Internet.
Вот как в данном случае выглядит взаимодействие с сервером. Программа-браузер отправляет запрос серверу. В качестве URL в запросе используется адрес CGI-скрипта. При этом данные могут содержаться как в самой спецификации URL (компонент пути в схеме HTTP), так и в теле HTTP-сообщения (в случае использования методов POST или PUT). Сервер определяет тип URL, то есть то, что это именно скрипт, а не HTML-страница, либо по маршрутному имени ресурса (обычно - каталог cgi-bin), либо по расширению имени файла (обычно *.cgi). После этого сервер порождает процесс-потомок, передает в него значения переменных окружения, которые порождаются в соответствии со спецификацией CGI, загружает CGI-скрипт и передает ему управление. CGI-скрипт анализирует окружение; если необходимо, считывает данные из потока стандартного ввода, который организован сервером; производит обработку информации, определенную алгоритмом, реализованным в скрипте; и возвращает результат вычислений через свой стандартный вывод в форме, определенной в спецификации CGI. После этого процесс, в котором исполнялся скрипт, завершается. Взаимодействие браузера, сервера и скрипта в этом случае носит разовый характер и по своей природе не ориентировано на длительный диалог, т. е. сессию.
Перечислим основные преимущества такого решения: простота, независимость, выполнение в отдельном адресном пространстве, открытый стандарт, архитектурная независимость.
Простота заключается в том, что прикладному программисту, знакомому с основами программирования для ОС Unix, не требуется изучать каких-либо еще спецификаций. Все взаимодействие прикладной программы с сервером основывается на знании окружения, в котором функционирует программа, и правил ввода/вывода данных через стандартные ввод/вывод. Фактически надо просто, используя функцию getenv(), получить значение переменной окружения и вывести всю информацию через стандартные функции форматной печати - printf(). Если программа работает в режиме обмена данными через командную строку и стандартный вывод, то для ее подключения к серверу необходимо затратить минимум усилий. Сложнее подключать программы с развитым графическим пользовательским интерфейсом, но обычно в "грамотно" написанных программах интерфейсный модуль выделен и допускает простую замену.
Независимость подразумевает возможность написания программы на любом из универсальных языков программирования или скриптов на языках программирования сценариев, например командных языках. В этом случае абсолютно не имеет значения язык, на котором написан сервер. Взаимодействие, организованное через переменные окружения, командную строку и стандартные ввод/вывод, осуществляется всегда одинаково в конкретной операционной среде.
С точки зрения влияния прикладной программы на операционную среду или на сервер спецификация CGI также выглядит безупречно. Скрипт запускается в своем адресном пространстве и никак не влияет на другие компоненты, которые система исполняет одновременно со скриптом.