Сайты ТУСУРа

Разработка веб-сервисов для научных и прикладных задач

Учебное пособие

Учебное пособие предназачено для студентов младших курсов бакалавриата всех направлений при изучении дисциплины «Разработка веб-сервисов для научных и прикладных задач», данное пособие может быть полезно для начального ознакомления с разработкой веб-приложений и изучения языка Python. Пособие знакомит читателя с основными современными технологиями разработки веб-сервисов и высокнагруженных приложений и использующимися при этом интернет технологиями.

Кафедра автоматизированных систем управления

Библиографическая запись:

Суханов, А. Я. Разработка веб-сервисов для научных и прикладных задач: Учебное пособие [Электронный ресурс] / А. Я. Суханов. — Томск: ТУСУР, 2024. — 182 с. — Режим доступа: https://edu.tusur.ru/publications/10801
Автор:   Суханов А. Я.
Год издания: 2024
Количество страниц: 182
Скачиваний: 17

Оглавление (содержание)

Введение 3

1 Краткий экскурс в историю телекоммуникаций, сетей и стандартизацию 4

1.1 Консорциум всемирной паутины W3C. 9

1.2 IANA (Internet Assigned Numbers Authority) 10

1.3 Модель взаимодействия открытых систем 11

1.3 Модель DoD (Department of Defense) 15

Контрольные вопросы к главе 1. 18

2 Сетевые приложения и сервисы 19

2.1 Веб-приложение. 19

2.1.1 Мобильные веб-приложения. 19

2.1.2 Классические веб-приложения 21

2.1.3 Преимущество веб–приложений и их история. 22

2.1.4 Структура типичного веб приложения. 23

2.1.5 Типичная современная структура веб-приложения 24

2.1.6 Монолитное веб-приложение 27

2.1.7 Микросервисная архитектура веб-приложения 28

2.1.8 Одностраничное веб-приложение 28

2.1.9 Поставщик услуг приложений ASP (Application service providers) 28

2.2 Веб-сервис. 29

2.2.1 XML-RPC 30

2.2.2 SOAP 30

2.2.3 JSON-RPC 33

2.2.4 REST API 34

2.2.4.1 Примеры использования гипермедиа в REST 37

2.2.4.2 Примеры использования запросов HTTP в RESTful 39

2.2.5 JSON pure API 41

2.2.6 JSON API 41

2.2.6.1 Объекты ресурсов 42

2.2.6.2 Получение данных 43

2.3 Документирование веб-сервиса 44

2.3.1 Swagger (OpenAPI) 44

2.3.2 RAML 46

2.3.3 API Blueprint 49

Контрольные вопросы по главе 2 50

3 XaaS (Anything as a Service, Что-либо как сервис). 51

3.1 Дата-центры 56

3.1.1 Стандарты оценки качества ЦОД 57

3.1.2 Уровни надежности ЦОД 60

3.1.3 Услуги которые предоставляет типичный дата-центр. 61

3.1.4 Colocation. 61

3.2 Типы вычислительных систем, размещаемых в ЦОД 63

3.2.1 Кластер 63

3.2.1.1 Кластеры высокой доступности. 63

3.2.1.2 Кластеры распределения нагрузки (Network Load Balancing, NLB) 64

3.2.1.3 Вычислительные кластеры 64

3.2.1.4 Устройство и состав кластера 65

3.2.2 Супер-компьютер 66

3.2.3 GRID-вычисления 68

3.3 Виртуализация 69

3.3.1 Миграция виртуальных машин (живая миграция) 69

3.3.2 Виды виртуализации. Виртуализация ресурсов. 69

3.3.3 Виртуализация оборудования. 70

3.3.4 Виртуализация памяти 70

3.3.5 Виртуализация хранилищ данных 71

3.3.6 Виртуализация операционных систем 72

3.3.6.1 Программная виртуализация 72

3.3.6.2 Аппаратная виртуализация 73

3.3.7 Гипервизор 75

3.3.7.1 Xen 77

3.3.7.2 VMware Workstation. 79

3.3.8 Виртуализация на уровне ОС. Контейнеризация. 80

3.3.8.1 Docker 82

3.4 Балансировка нагрузки. 83

3.4.1 Уровни балансировки 83

3.4.1.1 Балансировка на сетевом уровне 83

3.4.1.2 Балансировка на транспортном уровне 84

3.4.1.3 Балансировка на прикладном уровне 84

3.4.2 Алгоритмы и методы балансировки 84

3.4.2.1 Round Robin 84

3.4.2.2 Weighted Round Robin 85

3.4.2.3 Least Connections и другие алгоритмы 85

3.5 Аппаратное масштабирование архитектуры 86

3.5.1 Репликация 87

3.5.2 Шардинг 88

3.6 CDN. 88

3.7 Потоковые сервисы 90

3.8 Кэширование. 92

Контрольные вопросы по главе 3 93

4. Примеры технологий реализации веб-приложений 94

4.1 Примеры реализации TCP соединений на основе сокетов 94

4.1.1 Пример сервера и клиента на Python 95

4.1.2 Пример сервера и клиента на java 96

4.2 Протокол DNS 97

4.3 Протокол HTTP 99

4.3.1 Структура HTTP запроса 100

4.3.2 Структура ответа и коды ответов HTTP. 101

4.3.3 URI 104

4.3.4 Cookie 106

4.4 Авторизация и аутентификация в Web 108

4.4.1 HTTP аутентификация и SASL(Simple Authentication and Security Layer) аутентификация 108

4.4.2 Cookie-based авторизация 109

4.4.3 JWT токен авторизация 110

4.4.4 HTTP Authorization 111

4.4.5 Авторизация Auth 2.0 111

4.4.5.1 Client credentials grant flow 112

4.4.5.2 Authorization code flow 113

4.4.5.3 Authorization Code Flow with Proof Key for Code Exchange (PKCE). 114

4.4.6 Open ID Connect 116

4.4.7. Авторизация SAML 116

4.5 Cross-Origin Resource Sharing (CORS) 117

4.6 Протокол HTTPS 117

4.6.1 Пример поддержки HTTPS на python Flask 118

4.6.2 Пример создания самоудостоверяющего сертификата с использованием openssl 118

4.7 Протокол HTTP 2, HTTP 3 121

4.8 Технологии формирования динамического контента 123

4.8.1 Технология CGI 123

4.8.2 PHP 125

4.8.3 JSP 125

4.8.4 ASP .Net 127

4.8.5 WSGI 127

4.8.6 Фреймворки для веб-приложений 128

4.9 Язык Python 129

4.9.1 Типы и структуры данных в Python. 130

4.9.1.1 Аннотации типов. 130

4.9.1.2 Простые типы 131

4.9.1.3 Доступ к идентификатору объекта 131

4.9.1.4 Логический тип 131

4.9.1.5 Truthy/Falsy объекты. 132

4.9.1.6 Операции над числами. 133

4.9.1.7 Списки. 133

4.9.1.8 Срезы. 133

4.9.1.9 Класс строки. 134

4.9.1.10 Tuple – класс кортежа. 135

4.9.1.11 Класс множества (set). 136

4.9.1.12 Класс словаря (dict). 137

4.9.2 Основные операторы. 138

4.9.2.1 Оператор if. 138

4.9.2.2 Оператор ternary if. 138

4.9.2.3 Цикл while и for. Break. Continue. 138

4.9.3 Функции Python. 139

4.9.3.1 Аргументы функции. Вызов функции. 139

4.9.3.2 Использование *args и **kwargs. 141

4.9.3.3 Область видимости переменных. 142

4.9.3.4 Лямбда выражение. 145

4.9.4 Декораторы python. 146

4.9.4.1 Модуль functools. 150

4.9.5 Генераторы Python. 153

4.9.6 Классы Python. 155

4.9.6.1 Декораторы методов. 158

4.9.7 Пример веб-приложения на Flask. 159

4.9.8 Пример кэширования с использованием Redis 163

Контрольные вопросы по главе 4 165

ЗАКЛЮЧЕНИЕ 166

Список использованных источников литературы 167

ГЛОССАРИЙ 169