World Wide WebОбработка запросов на стороне сервера презентация

Содержание

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

Слайд 1World Wide Web Обработка запросов на стороне сервера
Тема 8


Слайд 2Обзор web-серверов
Apache
IIS – Internet Information Server (Microsoft)
lighttpd
tux (Red Hat)
сервера, встроенные в

платформы web-приложений (Zope)

Слайд 3Взаимодействие web-приложений с web-серверами
CGI – Common Gateway Interface
FastCGI / PCGI (web-приложение –

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

Слайд 4Преимущества CGI
Прозрачность использования;
"Языковая" независимость - CGI-программы могут быть написаны на

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

Слайд 5Недостатки CGI
Большое время отклика, т.к. ко времени выполнения CGI-приложения добавляется время

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

Слайд 6Преимущества FastCGI
Быстродействие, увеличенная пропускная способность
Простота применения и легкость миграции из CGI.


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

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

ресурсов (возможны утечки памяти и т.п.)


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

стадии


Слайд 9Недостатки API
Неизолированность процесса –снижение общей надёжности, т.к. стабильность всего web-сервера зависит

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


Слайд 10Основные переменные окружения в 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)


Слайд 11Пример CGI-скрипта
#!/usr/bin/perl -w

use strict;
use CGI qw(:standard);

print header;
print start_html;
print ‘Hello, World!';
print end_html;


Слайд 12Пример 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;
}

Слайд 13Отделение логики от представления
Отделение бизнес-логики от контента
Отделение контента от дизайна

Преимущества:
Упрощение разработки
Разделение

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

Слайд 14Web-шаблоны
Шаблоны служат для отделения логики (программной части) динамического web-сайта от представления

(вёрстки, дизайна)

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


Слайд 15Виды шаблонов по набору возможностей
Простые – только подстановка переменных. Примеры: команда print

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


Слайд 16Процессор шаблонов Template::Toolkit
Подстановка переменных: [% variable %], [% var.subvar %]
Вызов процедур и

методов: [% function() %], [% password.length %]
Выражения: [% discount / 100 + 1 %]
Итераторы: [% 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 %]

  • Слайд 17Пример шаблона Template::Toolkit
    [% INCLUDE header title = 'This is an example'

    %]

    Some Interesting Links



    [% webpages = [
    { url => 'http://foo.org',
    title => 'The Foo Organisation' },
    { url => 'http://bar.org',
    title => 'The Bar Organisation' }
    ]%]

    Links:

    [% INCLUDE footer %]

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


    Слайд 19Архитектура MVC (Model View Controller)


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

    логики предметной области:
    это наиболее простой путь облегчить решение сложных задач
    возможно создание нескольких различных интерфейсов, не изменяя логику предметной области


    Слайд 21Компоненты архитектуры MVC
    Шаблон MVC позволяет разделить данные,
    представление и обработку действий
    пользователя на

    три отдельных компонента

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


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


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


    Слайд 24Функции каркаса
    Работа с сессией
    Взаимодействие с web-сервером (раз-бор параметров, Cookie и т.п.)
    Взаимодействие

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

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

    Fusion (CFML)

    Слайд 26Web-сервер apache
    Команды запуска/остановки/перезапуска:

    /etc/init.d/httpd start|stop|restart|reload
    apachectl start|stop|restart|reload

    Файлы конфигурации:

    /etc/httpd/
    /etc/httpd/conf/httpd.conf


    Слайд 27Файл конфигурации Apache
    Listen 80
    ServerAdmin admin@site.ru
    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

    Слайд 28Пример секции VirtualHost

    ServerName site.ru
    ServerAlias www.site.ru

    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/ http://www.icons.ru/
    ScriptAlias /cgi-bin/ /www/site.ru/perl/
    AddHandler cgi-script .cgi


    Слайд 29Увеличение производительности web-решений
    Модернизация аппаратного обеспечения
    Оптимизация настройки ОС и web-сервера (введение кэширования,

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

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

    нагрузки (Load Balancing)

    Серверные фермы (server farms)


    Слайд 31Способы распределения нагрузки
    Без использования посредников (Round robin DNS, использование разных доменов/поддоменов)
    IP-level

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

    Эти способы могут произвольно комбинироваться.

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







    Слайд 33Layer 4 router / transparent IP proxy
    Сервер 1
    Сервер 2
    Сервер 3






    Transparent
    IP proxy
    (real IP)


    Слайд 34Reverse HTTP proxy
    Сервер 1
    Сервер 2
    Сервер 3






    Reverse
    HTTP proxy
    (real IP)


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

    с медленными клиентами (spoon feeding)

    Слайд 36Делегирование отдельных задач / распределение нагрузки между БД
    БД 1
    БД 2
    Application
    server 1






    Web

    server
    (real IP)

    Application
    server 2


    Слайд 37Литература
    Протокол CGI http://python.onego.ru/course/lect8.html
    Модуль CGI http://search.cpan.org/~lds/CGI.pm-3.25/CGI.pm
    Модуль CGI::Fast http://search.cpan.org/author/LDS/CGI.pm-3.25/CGI/Fast.pm
    Архитектура MVC http://en.wikipedia.org/wiki/Model-view-controller http://ru.wikipedia.org/wiki/Model_View_Controller
    Распределение нагрузки http://en.wikipedia.org/wiki/Reverse_proxy http://en.wikipedia.org/wiki/Load_balancing_%28computing%29 http://en.wikipedia.org/wiki/Layer_4_router


    Обратная связь

    Если не удалось найти и скачать презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

    Email: Нажмите что бы посмотреть 

    Что такое ThePresentation.ru?

    Это сайт презентаций, докладов, проектов, шаблонов в формате PowerPoint. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами с другими пользователями.


    Для правообладателей

    Яндекс.Метрика