Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Веб программирование.Начало.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
6.96 Mб
Скачать

3.5. Технология «клиент-сервер»

Приложения WWW работают по технологии «клиент-сервер», в которой все программное обеспечение разделяется на клиентскую и серверную части. Взаимодействие клиента и сервера происходит по принципу «запрос – ответ». Клиент посылает запрос, сервер обрабатывает его и посылает ответ. Рассмотрим, например, этапы соединения по протоколу http.

  • Запрос клиента. Браузер формирует запрос на основе данных из URL-пользователя, либо из данных формы.

  • Установка соединения клиента с сервером.

  • Посылка запроса клиента и ожидание ответа от сервера.

  • Обработка запроса сервером. Генерация ответа.

  • Прием ответа клиентом.

  • Разрыв соединения.

Пока нет обращений клиентов, HTTP-сервер просто «спит», установив прослушку заданного порта (по умолчанию 80). Когда клиент устанавливает соединение, сервер «просыпается» и, приняв данные запроса, вызывает скрипт для их обработки. Результат всех манипуляций – это выдача ответа, которого ожидает клиент. После того как сервер выдал ответ, он разрывает соединение и вновь «погружается в сон». В случае возникновения ошибки HTTP-транзакция может закончиться на любом из этих этапов.

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

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

Гипертекстовые препроцессоры стали новой ступенью эволюции серверных технологий. Основное их отличие – возможность вставлять программный код прямо в HTML-страницу. Это позволило значительно упростить процесс разработки, а также частично отделить представление от программного кода. Самым популярным гипертекстовым препро­цессором является PHP. Современный подход к созданию веб-приложений – это использование технологий JSP и ASP.NET. У JSP есть одно преимущество – кроссплатформенность (может работать и на Windows- и на Unix-серверах). В основном выбор технологии сводится к выбору связки: JSP+Linux или ASP.NET+Windows. Linux является бесплатной операционной системой, но много компаний и разработчиков выбирают именно ASP.NET+Windows.

Технологии CGI

Технология CGI (Common Gateway Interface) – стандартный шлюзовой интерфейс – была разработана для расширения возможностей WWW за счет подключения внешнего программного обеспечения – гостевых книг, баз данных, интернет-магазинов и т. д. При этом сервер взаимодействует с подключаемыми программами через стандартные потоки ввода/вывода. Входной информацией для таких приложений служит содержимое HTTP-заголовка (метод GET) либо тело запроса (метод POST). CGI-приложения генерируют HTML-код, который возвращается браузеру для отображения новой страницы.

Отметим, что вместе с CGI широко используется и термин «CGI-скрипты». Подобные приложения писались на скриптовом языке Perl и выполнялись на сервере. Основная проблема CGI-приложений заключается в том, что при каждом клиентском запросе сервер загружает данное приложение в отдельное адресное пространство, а затем инициирует его выполнение и выгрузку, а это ограничивает производительность приложений и возможность одновременной обработки большого количества клиентских запросов. CGI – это способ общения между http-сервером и программой-скриптом. CGI-приложения можно создавать с помощью любого средства разработки, генерирующего консольные приложения для операционной системы, под управле­нием которой функционирует Web-сервер, а не только на языке Perl. Программа, которая читает get-данные из системных переменных, post-данные из stdin и пишет результирующий html-код в stdout, может быть написана на любом языке. CGI-скрипт получает данные от пользователя и в зависимости от этих данных выполняет какие-либо действия, например, формирует HTML-страницу. Допустим, вы вводите в браузере строку

http://bbbb.by/cgi-bin/prr.cgi

Ваш браузер соединяется по протоколу HTTP с указанным сервером и просит у него нужный файл. Серверу передается строка

GET http://bbbb.by/cgi-bin/prr.cgi HTTP/1.1

Дальше идет посылаемая браузером информация о себе. Если такой файл есть, то сервер отошлет браузеру ответ:

HTTP/1.1 200 Ok Content-Type: text/html

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

При запуске CGI-скрипта сервер создает в системе набор переменных окружения, через которые и передаются данные от пользователя

REQUEST_METHOD – это поле, применяемое для определения метода запроса HTTP. Протокол HTTP использует методы GET и POST для запроса к серверу.Они отличаются тем что при методе GET запрос является как-бы частью URL т. е. http://www..../my.cgi?request, а при методе POST данные передаются в теле HTTP-запроса. Следовательно, для CGI при GET запрос идет в переменную QUERY_STRING а при POST подается на STDIN скрипта.

Пример: REQUEST_METHOD=GET

QUERY_STRING

Это строка запроса при методе GET. Так как не все символы разрешены в URL, а только символы латинки, то запрос из формы кодируется браузером. При этом некоторые символы получают специальное назначение методом urlencode(). Так, все пробелы заменяются на %20, а все специальные и непечатные символы на %hh, где hh-шестнадцатеричный код символа. Разделителем полей формы служит знак '&'. При обработке форм надо произвести декодирование.

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

Браузер посылает на сервер и информацию о себе, чтобы CGI-скрипт мог представить информацию с учетом этого.

Что такое скрипт

CGI-скрипт – это программа, которая выполняется на web-сервере по запросу клиента. CGI – это специализированный интерфейс, при посредстве которого производится запуск скрипта и дальнейшая работа. Если посетитель сайта заполнит форму и нажмет кнопку "Отправить", данные поступят на сервер, запускается cgi-скрипт и происходит обработка информации. Например, текст сообщения и прочие значения считываются скриптом из формы отправки и записываются в файл гостевой книги. Взамен этого на браузер посетителя отправляется сообщение.

Серверы, функционирующие под управлением Windows, могут работать с CGI-скриптами на на разных языках и часто доступны для скачивания. Скачанный скрипт необходимо подстроить под себя – в начале скрипта потребуется указать кое-какие данные. Например, путь к интерпретатору Perl (чаще всего – /usr/local/bin/perl/ или /usr/bin/perl/), адрес сайта, название файла, в который должны записываться результаты выполнения скрипта и т. д. Вдобавок ко всему, скрипт следует поместить в специальный каталог. Классический пример: имя скрипта Perl должно иметь расширения .cgi, а сам он будет находиться в каталоге cgi-bin. Но это необязательно: скрипт может располагаться где угодно, при этом большинство веб-серверов требуют специальной настройки. В веб-сервере Apache, например, такая настройка может производиться при помощи общего файла настроек httpd.conf или с помощью файла .htaccess в том каталоге, где содержится этот скрипт.

Пример скрипта Hello World на языке Python:

#!/usr/bin/python

print("""Content-Type: text/plain

Hello, world!""")

Пример программы Hello World на языке C:

#include <stdio.h>

int main(void) {

printf("Content-Type: text/plain;charset=us-ascii\n\n");

printf("Hello, world!\n\n");

return 0;

}

Использование CGI имеет ряд недостатков: сложность отделения программного кода от HTML-представления, отсутствие встроенных средств для создания пользовательского интерфейса. При создании сайта приходится либо все писать самому, либо использовать готовое решение, которое нелегко приспособить к другим условиям.

ISAPI и Apache DSO. Проблему ограниченной производительности CGI-приложений, которые выполняются в отдельном адресном пространстве, можно решить, создав приложение в виде библиотеки, загружающейся в адресное пространство Web-сервера и при необходимости остающейся там для обработки последующих запросов от других клиентов. Web-сервер должен поддерживать загрузку таких библиотек. Подобные приложения для Microsoft Internet Information Servise носят название ISAPI (Internet Server Application Program Interface), а для Web-сервера Apache такие библиотеки называются Apache DSO (Dynamic Shared Objects).

ASP, JSP, PHP. Очередным шагом в развитии технологий создания интернет-приложений было появление средств, позволяющих отделить задачи Web-дизайна от задач, связанных с реализацией функциональности приложений. Такой технологией стала Active Server Pages (ASP), построенная на основе ISAPI. Основная идея ASP заключается в создании Web-страниц с внедренными в них фрагментами кода на скриптовых языках. Однако указанные фрагменты кода интерпретируются не браузером, а сервером (ISAPI-библиотекой). Результат выполнения замещает сам фрагмент кода в версии страницы, которая передается в пользовательский браузер. Вскоре появились и другие технологии, реализующие идею размещения внутри Web-страницы кода, выполняемого Web-сервером. Известной является технология JSP (Java Server Pages), основная идея которой – однократная компиляция Java-кода (сервлета) при первом обращении к нему, выполнение методов этого сервлета и помещение результатов выполнения этих методов в набор данных, отправ­ляемых в браузер. Еще одной популярной технологией подобного типа является PHP (Personal Home Pages), которая использует CGI-приложения, интерпретирующие внедренный в HTML-страницу код на скриптовом языке.