SlideShare a Scribd company logo
Стажировка-2014
Web-приложения
Занятие 6 (часть 1)
Стажировка-2014
• У каждого узла есть IP-адрес
• У сайтов – доменные имена
• DNS (Domain Name System) –
иерархическая структура
серверов
Иерархическая адресация,
стек TCP/IP
Стажировка-2014
Domain Name System
Стажировка-2014
Архитектура клиент-сервер
Стажировка-2014
Архитектура клиент-сервер
Стажировка-2014
HTTP (HyperText Transfer Protocol)
– протокол передачи гипертекста
• Работает поверх TCP/IP
• Адрес узла – URL
• Не сохраняет промежуточное
состояние
https://ru.wikipedia.org/wiki/HTTP
Протокол HTTP
Стажировка-2014
Каждый HTTP-запрос состоит
из 3-х частей:
1. Тип запроса, протокол, URI,
параметры
2. Заголовки
3. Тело запроса
Структура протокола HTTP
Стажировка-2014
Запрос клиента
GET /news/recent HTTP/1.1
Host: www.example.com
Структура протокола HTTP
Стажировка-2014
• GET
• POST
• PUT
• DELETE
• …и остальные
HTTP-методы
Стажировка-2014
Коды состояния HTTP
Код состояния = код ответа +
поясняющая фраза
200 – OK
404 – Not Found
Список кодов состояния HTTP
Стажировка-2014
Заголовки HTTP
Заголовки HTTP (HTTP Headers) -
это строки в HTTP-сообщении,
содержащие разделённую
двоеточием пару имя-значение.
http://ru.wikipedia.org/wiki/Заголовки_HTTP
Стажировка-2014
Примеры HTTP заголовков
• General Headers (Cache-Control,
Date)
• Request Headers (Referer, User
Agent)
• Response Headers (Age, ETag)
• Entity Headers (Content-Language,
Content-Encoding)
Стажировка-2014
Заголовки HTTP
Пример запроса:
GET /wiki/страница HTTP/1.1
Host: ru.wikipedia.org
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru;
rv:1.9b5) Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
(пустая строка)
Стажировка-2014
Заголовки HTTP
Пример ответа:
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
(пустая строка)
Стажировка-2014
Cookie и сессии
Cookie – небольшой фрагмент
данных, отправленный сервером
и хранимый на компьютере
пользователя.
Стажировка-2014
Инструменты разработчика
Firebug (встроен в Firefox Nightly):
Стажировка-2014
Инструменты разработчика
Chrome developer tools:
Стажировка-2014
Сервера
Веб-сервер (HTTP-сервер):
это сервер, принимающий
HTTP запросы от клиентов, и
выдающий им HTTP-ответы
(веб-страницы в HTML,
изображения, файлы)
Стажировка-2014
Сервера
HTTP-сервера:
• Apache
• Nginx
• Lighttpd
• Microsoft IIS
• Cherokee
Стажировка-2014
Сервера
Особенности Apache:
• Система модулей для языков
• Механизм виртуальных
хостов для портов
• Язык для описания конфигов
https://ru.wikipedia.org/wiki/Apache
Стажировка-2014
Сервера
Установка Apache на Ubuntu:
sudo apt-get install apache2 php5
/etc/apache2/ports.conf
/etc/apache2/sites-available/
/etc/apache2/sites-enabled/
Стажировка-2014
Сервера
Пример Apache для статики:
<VirtualHost *:80>
DocumentRoot /var/www/demo
ServerName www.example.com
</VirtualHost>
Стажировка-2014
Сервера
Особенности Nginx:
• Асинхронная обработка
запросов
• Использует потоки вместо
процессов
• Идеален для статики
https://ru.wikipedia.org/wiki/Nginx
Стажировка-2014
Сервера
Установка Nginx на Ubuntu:
sudo apt-get install nginx
/etc/nginx/nginx.conf
/etc/nginx/sites-available/
/etc/nginx/sites-enabled/
Стажировка-2014
Сервера
Пример Nginx для статики:
server {
listen 80;
server_name example.com;
root /var/www/nginx;
location / {
#…
}
}
Стажировка-2014
Сервера
Сервера приложений:
• Apache Tomcat (Java)
• Phusion Passenger (Ruby, Python,
Node.js)
• Unicorn, thin (Ruby)
• gUnicorn, uWSGI (Python)
Стажировка-2014
Выбор инструмента
ruby
java
python
erlang
javascript
php
c#
scala go perl
c
c++
groovy
clojure
Стажировка-2014
Выбор инструмента
Rails, Sinatra
Spring
Django, Flask, Pyramid
Nitrogen
node.js
Zend, symfony
Asp.net
Play Revel
Grails
Стажировка-2014
Выбор инструмента
Возможные задержки при загрузке
страниц в вебе:
• задержки соединения
• загрузка статики
• запросы к базам данных
• скорость выполнения на сервере
• скорость обработки страницы в
браузере
Стажировка-2014
Выбор инструмента
Что зависит от выбора языка и
фреймворка:
• Скорость выполнения на
сервере
• Эффективность разработки
• Эффективность поддержки
Стажировка-2014
Выбор инструмента
Лучшего языка или
фреймворка не существует!
Каждой задаче – свой
инструмент.

More Related Content

PPTX
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
PPTX
Стажировка-2013, разработчики, занятие 7. Web, HTTP
PPTX
Cпецкурс 2014, занятие 7. Web-приложения
PPTX
04 web server_deployment_ru
PPTX
06 php instalation_ru
PPTX
07 virtual hosts_ru
PDF
HTTP протокол
PDF
Анатомия веб-сервиса (РИТ-2014)
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Стажировка-2013, разработчики, занятие 7. Web, HTTP
Cпецкурс 2014, занятие 7. Web-приложения
04 web server_deployment_ru
06 php instalation_ru
07 virtual hosts_ru
HTTP протокол
Анатомия веб-сервиса (РИТ-2014)

What's hot (20)

PPT
PPTX
03 web server_architecture_ru
PDF
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
PDF
Консольные приложения на Go
PDF
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
PPTX
Основы Java. 4. Web
PDF
Клиентские приложения под нагрузкой (HighLoad 2014)
PPTX
High Availability в жизни обычного разработчика
PDF
Анатомия веб сервиса (HighLoad-2014)
PPT
Видеохостинг своими руками
PPT
Загрузка, обработка, хранение и отдача статики
PPTX
Евгений Потапов (Сумма Айти)
PDF
05 - Web-технологии. Сетевые протоколы
PDF
Курс высокие нагрузки: сеть (отрывок)
PDF
UCloud™- примеры использования облака
PDF
Архитектура хранения фотографий в Badoo
PPTX
Intercepter-NG: сниффер нового поколения
PDF
Обзор Redis storage / Symfony Camp UA 2011
PDF
Twisted Framework - сетевые приложения в Python
03 web server_architecture_ru
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Консольные приложения на Go
CRIU: ускорение запуска PHP в CloudLinux OS -- Руслан Купреев
Основы Java. 4. Web
Клиентские приложения под нагрузкой (HighLoad 2014)
High Availability в жизни обычного разработчика
Анатомия веб сервиса (HighLoad-2014)
Видеохостинг своими руками
Загрузка, обработка, хранение и отдача статики
Евгений Потапов (Сумма Айти)
05 - Web-технологии. Сетевые протоколы
Курс высокие нагрузки: сеть (отрывок)
UCloud™- примеры использования облака
Архитектура хранения фотографий в Badoo
Intercepter-NG: сниффер нового поколения
Обзор Redis storage / Symfony Camp UA 2011
Twisted Framework - сетевые приложения в Python
Ad

Viewers also liked (20)

PPTX
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
PPTX
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
PPTX
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД
PPTX
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
PPTX
Стажировка-2015. Разработка. Занятие 4. Системы контроля версий
PDF
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
PDF
Стажировка 2015. Разработка. Занятие 5. Использование nginx
PDF
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
PDF
Стажировка 2015. Разработка. Занятие 6. Адаптивная верстка
PPT
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
PPTX
Спецкурс 2014, занятие 9 (2 часть). Code conventions and best practices
PPTX
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
PPTX
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
PDF
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
PPTX
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
PPTX
Курс Java-2016. Занятие 05. Тестирование и Java
PPTX
Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...
PPTX
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
PPTX
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
PDF
Стажировка 2015. Разработка. Занятие 9. BEM
Стажировка-2015. Тестирование. Занятие 2. Планирование процесса тестирования.
Стажировка-2015. Разработка. Занятие 1. Основы языков разметки.
Стажировка-2014, занятие 6 (часть 2). Транзакции в БД
Стажировка-2014, занятие 8. Обзор Rails framework (Ruby)
Стажировка-2015. Разработка. Занятие 4. Системы контроля версий
Стажировка-2015. Дизайн. Занятие 4 (2 часть). Цвет в web-дизайне
Стажировка 2015. Разработка. Занятие 5. Использование nginx
Стажировка 2015. Дизайн. Занятие 1. История дизайна, тренды 2015, логотипы.
Стажировка 2015. Разработка. Занятие 6. Адаптивная верстка
Стажировка-2014, занятие 8. Обзор Sails framework (Node.js)
Спецкурс 2014, занятие 9 (2 часть). Code conventions and best practices
Стажировка-2015. Разработка. Занятие 10 (часть 1). Конфиги, сборка, автотесты
Спецкурс 2014, занятие 5 (часть 2). Git, GitHub и Open source
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Стажировка-2015. Разработка. Занятие 12. Транзакции в БД, работа с БД из прил...
Курс Java-2016. Занятие 05. Тестирование и Java
Стажировка-2014, занятие 11. MVP, метод прогрессивного JPEG, Story mapping, A...
Стажировка-2014, занятие 10. Бизнес-модели и Lean startup.
Стажировка-2014, занятие 8. Обзор CakePHP framework (PHP)
Стажировка 2015. Разработка. Занятие 9. BEM
Ad

Similar to Стажировка-2014, занятие 6 (часть 1). Web-приложения (20)

PDF
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
PPTX
Мировые информационные ресурсы. Лекция 3
PPTX
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
PDF
Веб-сервер
PDF
Курс Java-2016. Занятие 09. Web
PPTX
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
PPTX
архитектура и принципы работы типового Web приложения
PPTX
Lesson1
ODP
Statutes and codes of HTTP
PPT
Web весна 2013 лекция 3
PPTX
Протокол HTTP
PPT
Web осень 2012 лекция 3
PDF
06 - Web-технологии. Протокол HTTP
PDF
Web осень 2013 лекция 3
PDF
Web лекция 1
PPTX
веб сервер
PDF
Вячеслав Бирюков - HTTP и HTTPS
PDF
Лекция #2. Принцип организации World Wide Web
PPTX
Web servers
Стажировка 2016-07-12 02 Денис Нелюбин. Web, HTTP, TCP/IP
Мировые информационные ресурсы. Лекция 3
Стажировка-2014, занятие 8. Общая архитектура web-приложений, web frameworks
Веб-сервер
Курс Java-2016. Занятие 09. Web
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
архитектура и принципы работы типового Web приложения
Lesson1
Statutes and codes of HTTP
Web весна 2013 лекция 3
Протокол HTTP
Web осень 2012 лекция 3
06 - Web-технологии. Протокол HTTP
Web осень 2013 лекция 3
Web лекция 1
веб сервер
Вячеслав Бирюков - HTTP и HTTPS
Лекция #2. Принцип организации World Wide Web
Web servers

More from 7bits (20)

PDF
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
PDF
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
PDF
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
PDF
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
PDF
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
PDF
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
PPTX
Курс Java-2016. Занятие 13. Spring
PDF
Курс Java-2016. Занятие 12. DBMS, JDBC
PDF
Курс Java-2016. Занятие 11. Servlets, JSP
PDF
Курс Java-2016. Занятие 10. Reflection, mock
PDF
Курс Java-2016. Занятие 08. Итераторы, многопоточность
PDF
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
PDF
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
PDF
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
PPTX
курс Java 2016. занятие 03. интерфейсы, generic, исключения
PPTX
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
PPTX
Курс Java-2016. Занятие 01. Введение в Java как технологию
PPTX
Спецкурс-2015. Занятие 05. Системы контроля версий
PPTX
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
PPTX
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Курс Java-2016. Занятие 13. Spring
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
курс Java 2016. занятие 03. интерфейсы, generic, исключения
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 01. Введение в Java как технологию
Спецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Спецкурс-2015. Занятие 04 (часть 1). Конфигурации, сборка проекта, автоматизи...

Стажировка-2014, занятие 6 (часть 1). Web-приложения