ݺߣ

ݺߣShare 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

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