Языки и средства создания Web-приложений.


Web-технологии

Структура Web-ориентированного программного обеспечения

Всемирная паутина (англ. World Wide Web, WWW, Web) — это распределенная гипертекстовая информационная система, работающая в сетях TCP/IP. В основе Web лежит механизм, дающий клиентам (браузерам, от англ. browse — просматривать, перебирать) возможность получать от Web-серверов структурированную информацию в виде гипертекстовых HTML-файлов (англ. HyperText Markup Language, язык разметки гипертекста). Отдельный HTML-файл представляет собой текстовый файл, в который внедрены специальные текстовые команды разметки — тэги (англ. tag). Все допустимые команды разметки можно разделить на несколько групп. Команды разметки первой группы формируют гипертекстовую структуру — они содержат ссылки на другие HTML-файлы, графические файлы, звуковые файлы, видеофайлы, файлы архивов, документов и т.д. Команды разметки второй группы описывают внутреннюю структуру данного гипертекстового документа (из каких частей он состоит), а третьей группы — указывают на способы визуального представления частей HTML-файла. Для передачи запросов Web-серверу и получения файлов от него, клиенты используют специальный протокол — Протокол передачи гипертекста (англ. HyperText Transfer Protocol, HTTP).

Протокол HTTP ориентирован на доставку текстовых файлов, и не предназначен для передачи произвольных двоичных файлов. Для преобразования любых двоичных файлов в текст, из которого можно будет затем однозначно восстановить исходный файл, в HTTP используются методы кодирования MIME (англ. Multipurpose Internet Mail Extensions, Многоцелевые расширения электронной почты), разработанные для передачи любых файлов по электронной почте. Этот стандарт можно использовать для кодирования множества разных объектов, таких, как текстовые файлы с разметкой, файлы в формате PostScript, графические файлы в форматах GIF и JPEG, аудиофайлы, видеофайлы и многое другое. MIME можно использовать и для управления способом представления (например, можно показывать картинку и одновременно воспроизводить звуковой файл).

Браузер — это интерпретатор языка HTML, который получает файлы с сервера и выполняет команды разметки, либо меняя способ изображения текста на экране (размер шрифта, выделение и т.п.), либо запуская соответствующие программы просмотра для объектов других типов. Некоторые из этих объектов могут быть сценариями, написанными на специальных языках программирования (напр., JavaScript, VBScript). Такие сценарии передаются на выполнение интерпретаторам соответствующих языков программирования. Ссылки на другие HTML-файлы (гиперссылки) визуально выделяются, а при их выборе (щелчком мыши или клавишей Enter) браузер загружает и отображает файл, на который указывает ссылка. В процессе переходов по гиперссылкам браузер запоминает их последовательность (историю) и позволяет легко вернуться к ранее просмотренным файлам. Браузеры могут иметь как графический (Microsoft Internet Explorer, Mozilla Firefox, Opera, и т.д.), так и текстовый (Lynx, Links и др.) интерфейс.

Для указания файлов, которые они хотят получить с сервера, браузеры используют Однородные указатели ресурсов (англ. Uniform Resource Locator, URL). URL состоит из трех частей:

— идентификатор используемого для доступа протокола;

— имя сервера, хранящего нужный объект;

— имя файла (страницы) на сервере.

Например, в URL http://www.lenta.ru/index.htm подстрока «http://» указывает на протокол HTTP, подстрока «www.lenta.ru» определяет имя сервера, а подстрока «/index.htm» определяет имя файла на сервере.

С помощью браузеров можно также заполнять формы ввода информации для передачи ее на Web-сервер. Введенная в форму информация передается Web-сервером для обработки другим программам. Такие программы должны удовлетворять требованиям Общего шлюзового интерфейса (англ. Common Gateway Interface, CGI). Используя формы, Web-сервер может предоставлять универсальный простой, дружественный и очень мощный интерфейс к различным источникам информации. Например, авиакомпания может использовать формы для заказа билетов. Когда вы ввели данные в форму и отправили ее на сервер, соответствующая программа получит ваши данные через CGI и обратится к нужным базам данных для выполнения заказа: БД самолетов, БД расписания полетов, БД счетов, БД прошлых заказов и т.д. Все эти сложные действия будут происходить незаметно для пользователя, который будет работать только с простой формой.


Из Web-серверов наиболее распространен Apache Web Server, работающий как в большинстве Unix-подобных ОС, так и в Microsoft Windows. Фирма Microsoft поддерживает собственный комплекс — Microsoft Internet Information Server (IIS), включающий Web-и FTP-сервер.

Протокол передачи гипертекста HTTP

Протокол передачи гипертекста HTTP (HyperText Transfer Protocol) описан в RFC 2616. HTTP-сервер ожидает поступления запросов от HTTP-клиентов. Каждый запрос обслуживается независимо от других запросов как этого, так и других клиентов. Процесс обработки запроса состоит из четырех фаз:

— клиент устанавливает TCP-соединение с портом на сервере (стандартный порт - 80);

— клиент передает HTTP-запрос серверу в виде последовательности ASCII-строк;

— сервер передает HTTP-ответ в виде последовательности ASCII-строк;

— клиент или сервер закрывает соединение.


HTTP-запрос

Первая строка HTTP-запроса содержит название метода — GET, POST, HEAD, PUT, OPTIONS, DELETE, TRACE. В основном используются первые два метода. Метод GET запрашивает передачу содержимого ресурса, указанного с помощью уникального идентификатора ресурса (Universal Resource Identifier, URI), то есть имени объекта, находящегося на сервере, следующего за именем метода. В простейшем случае клиент запрашивает файл — текст, изображение и т.п. Кроме того, за URI может скрываться программа, выдающая те или иные данные. Для клиента нет никаких различий, передается ли ему файл, взятый с жесткого диска ("статический") или сгенерированный программой ("динамический").

Метод POST используется для передачи данных клиентом серверу, например, введенных пользователем в поля формы.

Строки HTTP-запроса, начиная со второй и до первой пустой строки должны содержать строки HTTP-заголовка — набор параметров в форме пар "имя: значение". Список возможных имен параметров определен стандартом HTTP и в версии 1.1 состоит из 46 имен.

За пустой строкой может следовать тело HTTP-запроса, если используемый метод допускает его наличие. Так, при использовании метода POST необходимо передаваемые серверу данные поместить именно в тело HTTP-запроса. Метод GET не подразумевает наличия у HTTP-запроса тела.

Простейший HTTP-запрос имеет вид:

GET /

(пустая строка)

(пустая строка)

В ответ на такой HTTP-запрос сервер выдает страницу по-умолчанию.

Более сложный вариант запроса той же страницы по-умолчанию:

GET / HTTP/1.1

Host: 127.0.0.1:80 110

Accept:text/xml, text/html, text/plain, image/jpeg, image/gif,*/*

Accept-Language: ru,en-us

Accept-Encoding: gzip, deflate

Accept-Charset: windows-1251, utf-8,*

User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

Connection: Keep-Alive

Если в HTML-странице присутствует определение формы, например, такое:

<form name=form1 action=/search method=POST>

<input maxLength=256 size=55 name=q value=""> <input type=submit value="Search" name=btnG> </form>

Тогда, если пользователь запишет в поле ввода строку «something» и нажмет на кнопку “Search”, то будет сформирован подобный HTTP-запрос:

POST /search HTTP/1.1

Host: 127.0.0.1:80

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU)

Accept: text/xml, text/html, text/plain, image/jpeg, image/gif, */* Accept-Language: ru, en-us

Accept-Encoding: gzip, deflate

Accept-Charset: windows-1251, utf-8,*

Connection: keep-alive

Referer: http://127.0.0.1/index.htm

q=something

btnG=Search


HTTP-ответ

HTTP-ответ сервера, так же, как и HTTP-запрос, состоит из нескольких частей. Первая строка содержит численный код результата выполнения запроса и его словесное описание. Код состоит из трех цифр, причем первая из них означает, был ли запрос успешен или нет: 2 — успешное выполнение, 3 — перенаправление (ресурс был перемещен), 4 — ошибка в запросе, 5 — ошибка сервера. Вторая и третья цифры уточняют результат.

Строки со второй по первую пустую, как и в HTTP-запросе, содержат HTTP-заголовок — набор параметров.

В случае успешного выполнения метода GET за HTTP-заголовком и пустой строкой следует тело HTTP-ответа -содержимое запрошенного ресурса. В случае выполнения метода POST, HTTP-ответ тела не имеет.

Примерный вид HTTP-ответа:

HTTP/1.1 200 OK

Server: Microsoft-IIS/5.1

Date: Sun, 07 Jan 2024 10:13:14 GMT

Connection: Keep-Alive

Content-Length: 55 Content-Type: text/html

<html><head><title>TITLE</title></head><body></body></html>


Средства идентификации пользователей в протоколе HTTP

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

Средства эти должны быть поддержаны как Web-серверами, так и браузерами: необходимо, чтобы браузер передавал идентификационную информацию.

В настоящее время применяется два основных способа идентификации пользователей:

— механизм, использующий поля SetCookie и Cookie в заголовке запроса;

— механизм явного запроса идентификатора при посещении корневой страницы и динамического создания всех остальных страниц.

Cookie-механизм возможен благодаря ведению браузером базы данных, в которой хранятся небольшие блоки данных, полученные им в полях SetCookie ответов от Web-серверов. Если пользователь запрашивает страницу с сервера, для которого есть такой блок данных, то его содержимое отправляется в составе запроса в поле Cookie. Таким образом, Web-сервер имеет возможность сгенерировать уникальный идентификатор для каждого пользователя, передать его браузеру, а когда этот же пользователь вновь подключится, его браузер сам предъявит этот идентификатор. Этот механизм на самом деле позволяет различать не пользователей, а отдельные установки браузеров.

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


Языки и средства создания Web-приложений

Веб-приложения в большинстве случаев состоят из двух компонентов: серверного и клиентского, отличающихся местом выполнения. Серверный компонент – это по сути CGI-программа, выполняемая при поступлении HTTP-запроса, генерирующая Web-страницу, состоящую из HTML-разметки и программного кода клиентского компонента.

Для разработки серверных компонентов Web-приложений может быть использован практически любой доступный язык программирования — языки ассемблера, универсальные языки С, С++, Си#, Java, Паскаль, Visual Basic, и др., языки описания сценариев Perl, PHP, Python, Ruby и т.д., языки

командных оболочек Bash, KSh, WSh и др., и их комбинации. Наибольшее распространение в настоящее время получили специализированный язык описания сценариев PHP. На платформе Microsoft Windows широко используется технология ASP.NET.

Код клиентского компонента либо непосредственно интерпретируется Web-браузером (сценарии на языке JavaScript), либо Web-браузер запускает специализированную виртуальную машину, которая выполняет этот код (апплеты Java), либо Web-браузер вызывает функции из скомпилированных под конкретную операционную систему и аппаратную платформу модулей (технология ActiveX). Существуют универсальные клиентские ActiveX-компоненты с собственными языками программирования, такие, как Macromedia Flash.