Самостоятельная запись

Контакты:

Основные понятия Web-приложений

Начиная разговор о Web-приложениях, необходимо прежде всего опре-делиться с идентификацией этого понятия, определить те грани, которые отделяют этот тип приложений от всех прочих. Современные приложения можно классифицировать по множеству критериев: они делятся на при-кладные (решающие задачи некоторой конкретной предметной области) и системные (обеспечивающие функционирование самой вычислительной системы, ее диагностику или управление ею), монолитные (содержащие весь необходимый функционал в одном программном модуле) и распреде-ленные (в которых общий функционал разнесен по нескольким программ-ным модулям, которые в свою очередь могут быть размещены в различных узлах вычислительной сети), одно- и многопользовательские (в зависимо-сти от количества пользователей, которые имеют доступ к приложению), нативные (написанные для конкретной программно-аппаратной платфор-мы) и кроссплатформенные (способные выполняться на различных типах вычислительных устройств и версиях операционных систем). Если описы-вать современные Web-приложения, то их можно отнести к многопользо-вательским распределенным приложениям, работающим по технологии «клиент-сервер» с использованием программы-браузера в качестве основ-ной среды коммуникации с пользователем.

Современное Web-приложение строится как симбиоз множества техно-логий, протоколов, методологий и инструментов, но можно выделить не-сколько базовых компонентов, лежащих в основе его функционирования:

- сеть Интернет (Интранет), которая является основной средой пере-дачи данных между компонентами Web-приложения;

- протокол HTTP (Hyper Text Transfer Protocol), который формулирует основные правила обмена информацией между клиентской и серверной частями Web-приложения;

- языки представления данных (HTML, XML, CSS), которые позволяют описывать семантику передаваемых между частями Web-приложения дан-ных, а также желаемый внешний вид при их отображении пользователю;

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

- Web-сервер, обеспечивающий точку подключения клиентов к Web-приложению, а также среду интерпретации HTTP-запросов, запуска на для их обработки Web-приложения и передачи ответов клиенту;

- Web-браузер как наиболее популярный (но не единственно возмож-ный) вариант реализации среды клиентской части Web-приложения, реа-лизующей интерактивное взаимодействие с конечным пользователем.

Web-приложения относят к одному из двух типов:

- Ориентированные на представление информации. Приложения этого типа формируют на стороне сервера готовое представление данных на таких языках, как HTML, XML и CSS, задачей клиента (обычно – браузера) в этом случае является отображение этого представления на экране;

Средой функционирования Web-приложений является Всемирная паутина (World Wide Web). Она представляет собой существующую по-верх всемирной сети Интернет инфраструктуру, состоящую из множества Web-серверов, хранящих огромные объемы статических и динамических страниц, связанных между собой гипертекстовыми ссылками и передаю-щих эти документы по запросам в соответствии с протоколом HTTP. Сеть WWW является лишь одним из сервисов сети Интернет, но на сегодняш-ний момент данный сервис является самым востребованным и быстрорас-тущим в плане количества узлов и объема трафика в нем.

У Всемирной паутины в отличие от сети Интернет есть вполне кон-кретный автор-создатель. Основные идеи, которые легли в основу и в мо-дернизированном, но вполне сохранившем начальные принципе виде реа-лизованы в Web сегодня, предложил и реализовал для внутренней сети Ев-ропейского совета по ядерным исследованиям (CERN) инженер этой организации Тим Бернерс-Ли. В рамках проекта по созданию единого кор-поративного хранилища документов, связанных между собой гиперссыл-ками

Основные особенности функционирования сети Интернет вообще и Всемирной паутины в частности, которые делают Web-приложения очень

8

удобным средством предоставления информационных сервисов для своих клиентов:

- у Сети нет владельца, она является общечеловеческим достоянием. Существуют лишь ряд институтов, осуществляющих технологическое раз-витие сети;

- выход из строя некоторых узлов и сегментов Сети не делает недо-ступными все прочие узлы;

- Сеть не знает границ и может связать компьютеры в различных точках сети;

- принципы функционирования Сети можно воспроизвести в любом масштабе, реализуя, например, закрытую корпоративную сеть на тех же принципах, которых использует вся Всемирная паутина.

Ресурсы Web-приложений (страницы, сервисы) адресуются в сети Интернет с использованием Uniform Resource Identifier (URI, Унифициро-ванный идентификатор ресурса). URI представляет собой последователь-ность символов, уникально идентифицирующую физический или вирту-альный ресурс, доступный через сеть Интернет. Чаще всего используются две разновидности URI: Uniform Resource Locator (URL, Унифицирован-ный локатор ресурса) и Uniform Resource Name (URN, Унифицированное имя ресурса). Разница между ними заключается в том, что первый указы-вает, где найти ресурс, второй – как его идентифицировать.

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

Относительные ссылки отчасти решают проблемы использования абсолютных: они адресуют документ относительно текущего документа или корня сайта.

HTTP (Hypertext Transfer Protocol, Протокол передачи гипертекста) представляет собой протокол прикладного уровня семейства протоколов TCP/IP. Описание протокола HTTP можно найти в RFC-1945, RFC-2068, RFC-2069, RFC-2616, RFC-2617, RFC-7235. Протокол HTTP — самый рас-пространенный прикладной протокол стека TCP/IP. Когда вы посещаете различные WWW-сайты с помощью браузера, браузер взаимодействует с WEB-серверами, используя именно протокол HTTP. Всякий раз при пере-

12

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

Детали работы протокола HTTP относятся к техническим деталям работы стека TCP/IP и подробное знакомство с ним начинающим специа-листам в области Web-разработки кажется лишней тратой времени. Однако особенности работы основного протокола обмена данными в WWW отра-жены в тегах HTML-верстки документов, должны учитываться при орга-низации системы безопасности сайта, определяют доступный функционал Web-приложения.

Начинается диалог клиента и сервера с установки типового TCP-соединения на порту web-сервера (80, 8080, …), после чего клиент посыла-ет серверу ряд HTTP-запросов, которые сервер распознает, обрабатывает и формирует ответ клиенту в виде HTTP-ответа. При этом данные, которые вернет сервер, могут быть получены как непосредственно из содержимого запрошенного файла (типично для html-, css-, js-файлов, графических фай-лов), так сформированы динамически после запроса Web-приложением. В

Клиент

Web-сервер

Вводим адрес в браузере

TCP-пакет с флагом SYN

TCP-пакет с флагом ACK

Установка TCP-соединения

TCP-пакет с флагом ACK

HTTP GET-запрос:

GET http://www.volpi.ru HTTP/1.1

ACCEPT: text/html

HOST: www.volpi.ru

HTTP соединение

Обработка запро-са (вызов Web-приложения)

HTTP-ответ:

HTTP/1.1 200 OK

CONTENT-TYPE: text/html

<html><head><body>…</html>

Отображение ответа

в браузере

HTTP GET-запрос css-файла

HTTP-ответ с содержи-мым css-файла

Закрытие соединения

Рисунок 1.2 — Взаимодействие клиента-браузера и Web-сервера по протоколу HTTP

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

Форматы запроса и ответа HTTP-протокола строго документированы в стандартах, подробнее ознакомиться с ними можно в [1]. Все HTTP-транзакции имеют один общий формат. Каждый запрос клиента и ответ сервера состоит из трех частей: первой строки запроса (ответа), заголовка и тела. В строке запроса указываются: метод запроса, адрес сервера, вер-сия протокола. Метод определяет состав и структуру заголовков запроса, вид передачи и структуру параметров запроса. Наиболее распространен-

ными методами являются «GET» и «POST». Иногда также используются методы «HEAD», «DELETE», «PUT». В спецификации HTTP1.1 добавлены некоторые новые методы, например, «OPTIONS» и «TRACE» [3].

Необходимо отметить, что в протоколе HTTP весьма ограничены средства защиты передаваемых данных (шифрование, аутентификация, контроль целостности). Если Web-приложение требует наличия средств защиты передаваемого по неконтролируемой сети трафика, оно может ис-

пользовать протокол HTTPS, в котором безопасность передачи данных обеспечивается за счет использования защищенных протоколов SSL и TLS.

Особенности функционирования Web-приложений

При проектировании Web-приложений приходится учитывать все перечисленные условия его функционирования, что накладывает на этот тип приложений ряд ограничений и архитектурных шаблонов. Web-приложение строится по двухуровневой архитектуре «клиент-сервер» (на самом деле уровней может быть больше, учитывая, что функции сервера могут быть разнесены на несколько уровней). В качестве среды исполне-ния клиента выступает web-браузер, который обменивается с серверной частью данными и командами по протоколам HTTP/HTTPS. До сих пор в качестве второй стороны взаимодействия указывался web-сервер, но он служит лишь средством коммуникации клиента с серверной частью Web-приложения (так называемый backend). На рис. 1.3 представлен более пол-ный механизм взаимодействия частей Web-приложения.

Как следует из схемы на рисунке, web-сервер (реализующий обмен с клиентом по протоколу HTTP) может выполнять роль посредника. Он транслирует запросы и их параметры в исполняемую среду, в которой за-пускается серверная часть web-приложения.

Формируемые данные называются динамическими, по-тому что их содержание меняется во времени, может зависеть от парамет-ров, от предыдущих действий клиента в рамках данной сессии. Среда вы-полнения может быть различной (CGI-сценарий, SAPI-модуль), более подробно вопрос о способах формирования динамических данных будет рассмотрен ниже. Динамические данные, сформированные web-

приложением, передаются серверу, который формирует на их основе HTTP-ответ клиенту.