Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Спецкурс. Занятие 6

Web-приложения, часть 1
Иерархическая адресация,
стек TCP/IP

• У каждого узла есть IP-адрес
• У сайтов – доменные имена
• DNS (Domain Name System) –
иерархическая структура
серверов
Domain Name System
Архитектура клиент-сервер
Архитектура клиент-сервер
Протокол HTTP

HTTP (HyperText Transfer Protocol)
– протокол передачи гипертекста
• Работает поверх TCP/IP
• Адрес узла – URL
• Не сохраняет промежуточное
состояние
https://ru.wikipedia.org/wiki/HTTP
Структура протокола HTTP

Каждый HTTP-запрос состоит
из 3-х частей:
1. Тип
запроса, протокол, URI, параме
тры
2. Заголовки
3. Тело запроса
Структура протокола HTTP

Запрос клиента

GET /news/recent HTTP/1.1
Host: www.example.com
HTTP-методы

•
•
•
•
•

GET
POST
PUT
DELETE
…и остальные
Коды состояния HTTP

Код состояния = код ответа +
поясняющая фраза
200 – OK
404 – Not Found
Список кодов состояния HTTP
Заголовки HTTP

Заголовки HTTP (HTTP Headers) это строки в HTTP-сообщении,
содержащие разделённую
двоеточием пару имя-значение.
http://ru.wikipedia.org/wiki/Заголовки_HTTP
Примеры HTTP заголовков

• General Headers (CacheControl, Date)
• Request Headers (Referer, User
Agent)
• Response Headers (Age, ETag)
• Entity Headers (ContentLanguage, Content-Encoding)
Заголовки 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
(пустая строка)
Заголовки 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
(пустая строка)
Cookie и сессии

Cookie – небольшой фрагмент
данных, отправленный сервером
и хранимый на компьютере
пользователя.
Инструменты разработчика
Firebug (встроен в Firefox Nightly):
Инструменты разработчика
Chrome developer tools:
Сервера

Веб-сервер (HTTP-сервер):
это сервер, принимающий
HTTP запросы от клиентов, и
выдающий им HTTP-ответы
(веб-страницы в
HTML, изображения, файлы)
Сервера

HTTP-сервера:
• Apache
• Nginx
• Lighttpd
• Microsoft IIS
• Cherokee
Сервера

Особенности Apache:
• Система модулей для языков
• Механизм виртуальных
хостов для портов
• Язык для описания конфигов
https://ru.wikipedia.org/wiki/Apache
Сервера
Установка Apache на Ubuntu:

sudo apt-get install apache2 php5

/etc/apache2/ports.conf
/etc/apache2/sites-available/
/etc/apache2/sites-enabled/
Сервера

Пример Apache для статики:

<VirtualHost *:80>
DocumentRoot /var/www/demo
ServerName www.example.com
</VirtualHost>
Сервера

Особенности Nginx:
• Асинхронная обработка
запросов
• Использует потоки вместо
процессов
• Идеален для статики
https://ru.wikipedia.org/wiki/Nginx
Сервера

Установка Nginx на Ubuntu:
sudo apt-get install nginx
/etc/nginx/nginx.conf
/etc/nginx/sites-available/
/etc/nginx/sites-enabled/
Сервера

Пример Nginx для статики:
server {
listen 80;
server_name example.com;
root /var/www/nginx;
location / {
#…
}

}
Сервера

Сервера приложений:
• Apache Tomcat (Java)
• Phusion Passenger
(Ruby, Python, Node.js)
• Unicorn, thin (Ruby)
• gUnicorn, uWSGI (Python)
Выбор инструмента

java

c

erlang

c#

php

python

ruby

groovy

scala

go

perl

c++

javascript
Выбор инструмента

Spring Asp.net
Nitrogen Zend
Django
Grails
Rails
node.js
Play

Revel
Выбор инструмента

Возможные задержки при загрузке
страниц в вебе:
• задержки соединения
• загрузка статики
• запросы к базам данных
• скорость выполнения на сервере
• скорость обработки страницы в
браузере
Выбор инструмента

Что зависит от выбора языка и
фреймворка:
• Скорость выполнения на
сервере
• Эффективность разработки
• Эффективность поддержки
Выбор инструмента

Лучшего языка или
фреймворка не существует!
Каждой задаче – свой
инструмент.

More Related Content

Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6