World Wide Web Обработка запросов на стороне сервера Тема 8.

Презентация:



Advertisements
Похожие презентации
Web-узлы. Разработка и администрирование.. Часть 1. Web-технология.
Advertisements

Учебный курс Технологии и средства разработки корпоративных систем Лекция 1 Открытые системы. Клиент и сервер Лекции читает кандидат технических наук,
Где хранить данные в web- приложении page –JSP страница request – HTTP запрос session – сессия пользователя application – веб-приложение Static Java class.
1 Учебный курс Введение в JavaScript и CGI Лекция 5 Основы CGI кандидат технических наук Павел Брониславович Храмцов
Тема 4 Организация доступа к ресурсам портала 1. Базовая аутентификация пользователей 2. Автоматическая регистрация и аутентификация пользователей 3. Аутентификация.
Мартин Фаулер « Архитектура корпоративных программных приложений » Подготовила Ст. ПС - 41 Лукиных Н. А.
Лекция Тема: «Средства создания серверного программного обеспечения» Преподаватель: Халелова Е.Н.
WEB- ТЕХНОЛОГИИ Лекция 1. WEB- ПРИЛОЖЕНИЯ 1 Особый тип программ, построенных по архитектуре « клиент - сервер » Основа получение запросов от пользователя.
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Троицкий Д.И. Интернет-технологии1 ДИНАМИЧЕСКИЕ WEB-СТРАНИЦЫ СЕРВЕРНЫЕ СЦЕНАРИИ Лекция 9 Кафедра «Автоматизированные станочные системы» Dept. of Automated.
CGI Common Gateway Interface.
Тестирование безопасности или Security and Access Control Testing.
Обнаружение уязвимостей в web- приложениях, написанных на Python, средствами динамического анализа исходных кодов Заливин Д.А. Козлов Д.Д. Петухов А.А.
Сервер приложений С++ Андрей Шетухин, Илья Космодемьянский SUP Fabrik.
Компьютерные технологии в метеорологии (Java-технологии) Чукин В. В.
Open InfoSec Days Томск, 2011 Глава 1. Атаки на веб-приложения и методы защиты Занятие 3. File Inclusion.
Единая система аутентификации Обзор решения Москва, 2012г.
Проф. В.К.Толстых, Технологии разработки Internet- приложений ASP.NET приложения – Модули HTTP, фильтры, события приложения - Global.asax.
Перспективы применения технологии Java Server Pages при разработке web-интерфейса для доступа к базам данных Выпускная квалификационная работа на степень.
Реализация доступа к учетным регистрам и функциям ПП ПАРУС - Предприятие 8 через WEB Обзор возможностей.
Транксрипт:

World Wide Web Обработка запросов на стороне сервера Тема 8

Обзор web-серверов Apache IIS – Internet Information Server (Microsoft) lighttpd tux (Red Hat) сервера, встроенные в платформы web- приложений (Zope)

Взаимодействие web-приложений с web-серверами CGI – Common Gateway Interface FastCGI / PCGI (web-приложение – отдельный процесс) Подключаемые модули (использющие API web-сервера) примеры API: Apache API, isapi, nsapi примеры модулей: mod_perl, mod_php, mod_python, Использование CGI как шлюза для подключения к внешним приложениям и сервисам

Преимущества CGI Прозрачность использования; "Языковая" независимость - CGI-программы могут быть написаны на любом языке программирования или командном языке, имеющим средства работы со строками; Процессная изолированность - при запуске CGI- програмы на сервере порождается отдельный процесс и ошибочный CGI-скрипт не может сломать Web-сервер или получить доступ к закрытой информации; Открытость стандарта - CGI интерфейс применим на каждом Web-сервере; Архитектурная независимость - CGI не зависит от особенностей реализации архитектуры сервера (однопоточности, многопоточности и т.д.);

Недостатки CGI Большое время отклика, т.к. ко времени выполнения CGI-приложения добавляется время на старт процесса Не подходит для использования при интенсивной обработки запросов, т.к. создаёт большую нагрузку на сервер (накладные расходы на старт процессов, большой расход памяти при одновременном запуске множества скриптов) CGI-программы не могут быть использованы на этапах HTTP-аутентификации пользователя и проверки прав доступа к ресурсу.

Преимущества FastCGI Быстродействие, увеличенная пропускная способность Простота применения и легкость миграции из CGI. "Языковая" независимость Изолированность процессов - "неисправные" FastCGI- программы не могут разрушить ядро сервера, нельзя получить служебную информацию сервера. Совместимость – поддерживается рядом web-серверов. Архитектурная независимость - интерфейс не зависит от особенностей реализации серверной архитектуры и прикладные программы могут быть как одно-, так и многопоточными. Распределённость - FastCGI обеспечивает возможность выполнять приложения удаленно, что используется для распределенной загрузки и управления внешними Web- сайтами.

Недостатки FastCGI Нестабильная работа (при подвисании обслуживающих процессов) Необходимость жёстко следить за освобождением ресурсов (возможны утечки памяти и т.п.)

Преимущества API Максимальное быстродействие Возможность тесного взаимодействия с сервером, обработки запроса на любой стадии

Недостатки API Неизолированность процесса –снижение общей надёжности, т.к. стабильность всего web-сервера зависит от стабильности web- приложения "Языковая" зависимость Ограниченность применения – написанные программы в соответствии с данным API могут использоваться только на данном сервере Повышенный расход памяти процесса web- сервера (каждый процесс web-сервера содержит в том числе код web-приложения)

Основные переменные окружения в CGI-запросах QUERY_STRING Строка запроса REMOTE_ADDR IP-адрес клиента REMOTE_USER Имя клиента (если он был авторизован) SCRIPT_NAME Имя скрипта SCRIPT_FILENAME Имя файла со скриптом SERVER_NAME Имя сервера HTTP_USER_AGENT Название браузера клиента REQUEST_URI Строка запроса (URI) CONTENT_TYPE Тип контента (для запросов POST) CONTENT_LENGTH Длина контента (для запросов POST)

Пример CGI-скрипта #!/usr/bin/perl -w use strict; use CGI qw(:standard); print header; print start_html; print Hello, World! '; print end_html;

Пример FastCGI-скрипта #!/usr/bin/perl –w use CGI::Fast qw(:standard); $COUNTER = 0; while (new CGI::Fast) { print header; print h1("Fast CGI Rocks"), "Invocation number ",b($COUNTER++), " PID ",b($$),".", hr; }

Отделение логики от представления Отделение бизнес-логики от контента Отделение контента от дизайна Преимущества: Упрощение разработки –Разделение сложного целого на составные части –Стимулирует бóльшую степень абстракции и структуризации Разделение труда –Программист –Верстальщик –Дизайнер

Web-шаблоны Шаблоны служат для отделения логики (программной части) динамического web- сайта от представления (вёрстки, дизайна) Виды шаблонов: Статические – страница генерируется перед публикацией на сервере Функционирующие на стороне сервера (server-side) – страница генерируется сервером «на лету» Функционирующие на стороне клиента (client-side) – страница формируется на стороне клиента

Виды шаблонов по набору возможностей Простые – только подстановка переменных. Примеры: команда print в Perl, echo в PHP "Hello $x С поддержкой итерации – возможности простых шаблонов + возможность повторения блоков с разными наборами данных. Примеры: HTML::Template (Perl), phpBB- шаблоны Сложные – поддержка логики, параметризация блоков, циклы, выражения. Примеры: XSL, Template::Toolkit (Perl), Smarty (PHP)

Процессор шаблонов Template::Toolkit Подстановка переменных: [% variable %], [% var.subvar %] Вызов процедур и методов: [% function() %], [% password.length %] Выражения: [% discount / %] Итераторы: [% FOREACH r = rows %] [% r %] [% END %] Условные конструкции: [% IF condition %]истина[% ELSE %]ложь[% END %] [% UNLESS condition %]ложь[% END %] Операция выбора: [% SWITCH code %] [% CASE a %]Выбран вариант A [% CASE %]Выбран неизвестный вариант [% END %] Подстановка шаблонов: [% INCLUDE header.inc %], [% PROCESS header.inc %] Фильтры: [% content | html %] [% INCLUDE myfile | trim %]

Пример шаблона Template::Toolkit [% INCLUDE header title = 'This is an example' %] Some Interesting Links [% webpages = [ { url => ' title => 'The Foo Organisation' }, { url => ' title => 'The Bar Organisation' } ]%] Links: [% FOREACH link = webpages %] [% link.title %] [% END %] [% INCLUDE footer %]

Схема работы web-приложения Шаблон Template processor Данные БД Готовая HTML- страница Бизнес- логика Входные пара- метры

Архитектура MVC (Model View Controller)

Архитектура MVC и классическая архитуктура domain/UI View Controller Model Бизнес-логика предметной области (domain logic) Пользова- тельский интерфейс (UI) Преимущества отделения пользовательского интерфейса от логики предметной области: это наиболее простой путь облегчить решение сложных задач возможно создание нескольких различных интерфейсов, не изменяя логику предметной области

Компоненты архитектуры MVC Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контролера), изменяя свое состояние. Представление (View). Отвечает за отображение информации (пользовательский интерфейс). Контролер (Controller). Интерпретирует данные, введенные пользователем, и информирует модель и представление о необходимости соответствующей реакции.

Уточнённая схема работы web-приложения Шаблон Template processor Данные БД Готовая HTML- страница Вх. пара- метры C M V

Web-каркасы Web-сервер Каркас web-приложения Web-приложение (бизнес-логика) Сессии Процессор шаблонов БД

Функции каркаса Работа с сессией Взаимодействие с web-сервером (раз-бор параметров, Cookie и т.п.) Взаимодействие с БД Обработка шаблонов Обработка ошибок Базовая архитектура приложения (MVC и т.п.) Журналирование Вызов обработчиков страниц, поддержка переадресации между обработчиками

Примеры каркасов Catalyst (Perl) ASP.NET (C#, VB.NET) Zope (Python) Ruby On Rails (Ruby) Spring, GRails (Java) Cold Fusion (CFML)

Web-сервер apache Команды запуска/остановки/перезапуска: /etc/init.d/httpd start|stop|restart|reload apachectl start|stop|restart|reload Файлы конфигурации: /etc/httpd/ /etc/httpd/conf/httpd.conf

Файл конфигурации Apache Listen 80 ServerAdmin ErrorLog logs/error_log DirectoryIndex index.php index.shtml index.html index.htm AddHandler cgi-script.cgi AddHandler cgi-script.pl AddType text/html.shtml AddDefaultCharset windows-1251 NameVirtualHost *:80

Пример секции VirtualHost ServerName site.ru ServerAlias DocumentRoot /www/site.ru ErrorLog /var/log/httpd/site.ru-errors CustomLog /var/log/httpd/site.ru-access combined AllowOverride All DirectoryIndex /cgi-bin/index.fcgi Redirect /icons/ ScriptAlias /cgi-bin/ /www/site.ru/perl/ AddHandler cgi-script.cgi

Увеличение производительности web-решений Модернизация аппаратного обеспечения Оптимизация настройки ОС и web- сервера (введение кэширования, отключение лишних модулей и т.п.) Модернизация web-приложения –оптимизация узких мест –уменьшение объема требуемой памяти (отказ от лишних библиотек и т.п.) –кэширование данных из БД Распределение нагрузки

Распределение нагрузки. Кластеры Виды кластеров Кластеры высокой надежности (HA) Кластеры повышенной производительности (HPC) Кластеры распределения нагрузки (Load Balancing) Серверные фермы (server farms)

Способы распределения нагрузки Без использования посредников (Round robin DNS, использование разных доменов/поддоменов) IP-level (transparent proxy, layer 4 router) Web-server level (reverse proxy, caching HTTP proxy) Web-приложение делегирует выполнение определённых операций другим машинам –Распределённые базы данных –Выполнение сложных вычислений и обработки с привлечением дополнительных серверов Эти способы могут произвольно комбинироваться.

Без использования посредников Сервер 1 (IP 1) Сервер 2 (IP 2) Сервер 3 (IP 3)

Layer 4 router / transparent IP proxy Сервер 1Сервер 2 Сервер 3 Transparent IP proxy (real IP)

Reverse HTTP proxy Сервер 1Сервер 2Сервер 3 Reverse HTTP proxy (real IP)

Функции reverse proxy Обеспечение безопасности (Security) Шифрование (Encryption) Компрессия (Compression) Распределение нагрузки (load distribution) Кэширование (caching) Работа с медленными клиентами (spoon feeding)

Делегирование отдельных задач / распределение нагрузки между БД БД 1 БД 2 Application server 1 Web server (real IP) Application server 2

Литература Протокол CGI Модуль CGI Модуль CGI::Fast Архитектура MVC Распределение нагрузки