cпецкурс 2014, занятие 7. web-приложения
DESCRIPTION
Занятия на спецкурсе в ОмГУ 2014TRANSCRIPT
![Page 1: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/1.jpg)
Спецкурс ОмГУ-2014
Web-приложения
Занятие 7
![Page 2: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/2.jpg)
Спецкурс ОмГУ-2014
• У каждого узла есть IP-адрес• У сайтов – доменные имена• DNS (Domain Name System) –
иерархическая структура серверов
Иерархическая адресация, стек TCP/IP
![Page 3: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/3.jpg)
Спецкурс ОмГУ-2014
Domain Name System
![Page 4: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/4.jpg)
Спецкурс ОмГУ-2014
Архитектура клиент-сервер
![Page 5: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/5.jpg)
Спецкурс ОмГУ-2014
Архитектура клиент-сервер
![Page 6: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/6.jpg)
Спецкурс ОмГУ-2014
HTTP (HyperText Transfer Protocol) – протокол передачи гипертекста• Работает поверх TCP/IP• Адрес узла – URL• Не сохраняет промежуточное
состояние
https://ru.wikipedia.org/wiki/HTTP
Протокол HTTP
![Page 7: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/7.jpg)
Спецкурс ОмГУ-2014
Каждый HTTP-запрос состоит из 3-х частей:1. Тип запроса, протокол, URL, параметры2. Заголовки3. Тело запроса
Структура протокола HTTP
![Page 8: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/8.jpg)
Спецкурс ОмГУ-2014
Запрос клиента
GET /news/recent HTTP/1.1Host: www.example.com
Структура протокола HTTP
![Page 9: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/9.jpg)
Спецкурс ОмГУ-2014
• GET• POST• PUT• DELETE• …и остальные
HTTP-методы
![Page 10: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/10.jpg)
Спецкурс ОмГУ-2014
Коды состояния HTTP
Код состояния = код ответа + поясняющая фраза
200 – OK404 – Not Found
Список кодов состояния HTTP
![Page 11: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/11.jpg)
Спецкурс ОмГУ-2014
Заголовки HTTP
Заголовки HTTP (HTTP Headers) -это строки в HTTP-сообщении, содержащие разделённую двоеточием пару имя-значение.
http://ru.wikipedia.org/wiki/Заголовки_HTTP
![Page 12: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/12.jpg)
Спецкурс ОмГУ-2014
Примеры HTTP заголовков
• General Headers (Cache-Control, Date)
• Request Headers (Referer, User Agent)
• Response Headers (Age, ETag)• Entity Headers (Content-Language,
Content-Encoding)
![Page 13: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/13.jpg)
Спецкурс ОмГУ-2014
Заголовки HTTP
Пример запроса:
GET /wiki/страница HTTP/1.1Host: ru.wikipedia.orgUser-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5Accept: text/htmlConnection: close(пустая строка)
![Page 14: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/14.jpg)
Спецкурс ОмГУ-2014
Заголовки HTTP
Пример ответа:
HTTP/1.1 200 OKDate: Wed, 11 Feb 2009 11:20:59 GMTServer: ApacheX-Powered-By: PHP/5.2.4-2ubuntu5wm1Last-Modified: Wed, 11 Feb 2009 11:20:59 GMTContent-Language: ruContent-Type: text/html; charset=utf-8Content-Length: 1234Connection: close(пустая строка)
![Page 15: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/15.jpg)
Спецкурс ОмГУ-2014
Cookie и сессии
Cookie – небольшой фрагмент данных, отправленный сервером и хранимый на компьютере пользователя.
![Page 16: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/16.jpg)
Спецкурс ОмГУ-2014
Инструменты разработчика
Firebug (встроен в Firefox Nightly):
![Page 17: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/17.jpg)
Спецкурс ОмГУ-2014
Инструменты разработчика
Chrome developer tools:
![Page 18: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/18.jpg)
Спецкурс ОмГУ-2014
Сервера
Веб-сервер (HTTP-сервер): это сервер, принимающий HTTP запросы от клиентов, и выдающий им HTTP-ответы (веб-страницы в HTML, изображения, файлы)
![Page 19: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/19.jpg)
Спецкурс ОмГУ-2014
Сервера
HTTP-сервера:• Apache• Nginx• Lighttpd• Microsoft IIS• Cherokee
![Page 20: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/20.jpg)
Спецкурс ОмГУ-2014
Сервера
Особенности Apache:• Система модулей для языков• Механизм виртуальных
хостов для портов• Язык для описания конфиговhttps://ru.wikipedia.org/wiki/Apache
![Page 21: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/21.jpg)
Спецкурс ОмГУ-2014
Сервера
Установка Apache на Ubuntu:
sudo apt-get install apache2 php5
/etc/apache2/ports.conf/etc/apache2/sites-available//etc/apache2/sites-enabled/
![Page 22: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/22.jpg)
Спецкурс ОмГУ-2014
Сервера
Пример Apache для статики:
<VirtualHost *:80>DocumentRoot /var/www/demoServerName www.example.com
</VirtualHost>
![Page 23: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/23.jpg)
Спецкурс ОмГУ-2014
Сервера
Особенности Nginx:• Асинхронная обработка
запросов• Использует потоки вместо
процессов• Идеален для статикиhttps://ru.wikipedia.org/wiki/Nginx
![Page 24: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/24.jpg)
Спецкурс ОмГУ-2014
Сервера
Установка Nginx на Ubuntu:sudo apt-get install nginx
/etc/nginx/nginx.conf/etc/nginx/sites-available//etc/nginx/sites-enabled/
![Page 25: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/25.jpg)
Спецкурс ОмГУ-2014
Сервера
Пример Nginx для статики:server {listen 80;server_name example.com;root /var/www/nginx;
location / {#…
}}
![Page 26: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/26.jpg)
Спецкурс ОмГУ-2014
Сервера
Сервера приложений:• Apache Tomcat (Java)• Phusion Passenger (Ruby, Python,
Node.js)• Unicorn, thin (Ruby)• gUnicorn, uWSGI (Python)
![Page 27: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/27.jpg)
Спецкурс ОмГУ-2014
Выбор инструмента
ruby
java
pythonerlang
javascript
php
c#
scala go perl
c
c++
groovy
clojure
![Page 28: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/28.jpg)
Спецкурс ОмГУ-2014
Выбор инструмента
Rails, Sinatra
Spring
Django, Flask, Pyramid
Nitrogen
node.js
Zend, symfonyAsp.net
Play Revel
Grails
![Page 29: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/29.jpg)
Спецкурс ОмГУ-2014
Выбор инструмента
Возможные задержки при загрузке страниц в вебе:• задержки соединения• загрузка статики• запросы к базам данных• скорость выполнения на сервере• скорость обработки страницы в
браузере
![Page 30: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/30.jpg)
Спецкурс ОмГУ-2014
Выбор инструмента
Что зависит от выбора языка и фреймворка:• Скорость выполнения на
сервере• Эффективность разработки• Эффективность поддержки
![Page 31: Cпецкурс 2014, занятие 7. Web-приложения](https://reader033.vdocuments.pub/reader033/viewer/2022052910/559cb8b21a28abe4558b464a/html5/thumbnails/31.jpg)
Спецкурс ОмГУ-2014
Выбор инструмента
Лучшего языка или фреймворка не существует!
Каждой задаче – свой инструмент.