Разработка
веб-сервисов

Беседа 8: Инструментарий. Экспорт и импорт решений
План занятия
 О велосипедах
 Библиотеки и фреймворки

 Интерфейсы использования сервисов
 Безопасность

2
Библиотеки и фреймворки
Подходы к разработке

 Берем готовый движок
 Пишем с нуля

3
Библиотеки и фреймворки
Подходы к разработке

 Пишем с нуля. Этапы
 Получить данные из адресной строки / формы
 Проверить данные
 Выполнить действие
 Отдать результат в браузер

4
Библиотеки и фреймворки
Подходы к разработке

 Используем библиотеки и фремворки

5
Библиотеки и фреймворки
Библиотеки

Библиотека (модуль, пакет) — набор процедур,
функций или классов для выполнения задач
определенной тематики

6
Библиотеки и фреймворки
Библиотеки

 Обработка текста
 Шаблонизаторы

 Работа с хранилищами
 Работа с почтой
 и многое-многое другое

7
Библиотеки и фреймворки
Библиотеки. Сборники кода

 Perl

— CPAN

(~126800 модулей)

 PHP

— PECL/PEAR

(~600)

 Python

— PyPI

(~36200)

 Ruby

— RubyGems

(~65200)

8
Библиотеки и фреймворки
Библиотеки. Работа с хранилищем

 Работа с API хранилища (драйверы, ODBC, JDBC итп)
 ORM — Object Relational Mapping или «объектнореляционная проекция»

9
Библиотеки и фреймворки
Шаблонизаторы

Шаблонизатор — библиотека, позволяющая
использовать шаблоны для генерации страниц
Назначение шаблонизатора — отделить
представление от бизнес-логики приложения

10
Библиотеки и фреймворки
Шаблонизаторы. Возможности

Базовые конструкции
 Переменные

 Циклы
 Логические конструкции (if, else…)
 Обработка данных (escape, trim etc)
 Включение шаблонов
11
Библиотеки и фреймворки
Шаблонизаторы. Различия

 Синтаксис
 Скорость работы
 Интерпретация
 Компиляция

12
Библиотеки и фреймворки
Шаблонизаторы. Примеры
 Perl
 Template::Toolkit
 HTML::Template

 PHP
 Smarty
 Twig

 Python
 Kid

 CTPP (Perl, PHP, Python)
13
Библиотеки и фреймворки
Фреймворки

Фреймворк — набор модулей, библиотек и
соглашений для облегчения разработки
повседневных задач и объединения компонентов
сложной системы
В отличие от библиотек, влияют на архитектуру
приложений.
14
Библиотеки и фреймворки
Основные задачи фреймворка

 Обработка входных данных
 Вызов обработчиков бизнес-логики

 Вывод данных

15
Библиотеки и фреймворки
Дополнительные задачи фреймворка

 Пре- и пост-обработка данных
 Создание и валидация форм

 Работа с хранилищами данных

16
Библиотеки и фреймворки
Примеры фреймворков

 PHP
 Yii
 Symphony
 Zend

 Python
 Django

17
Библиотеки и фреймворки
Примеры фреймворков

 Perl
 Mojolicious
 Dancer
 Catalyst

 Ruby
 Ruby-on-Rails

18
API

API — набор готовых инструментов (классов,
процедур, структур и констант), предоставляемых
сервисом для использования во внешних продуктах
Web API — набор HTTP-запросов и HTTP-ответов
определенной структуры

19
API
API. Преимущества

 Стандартизация
 Отделение интерфейсов от реализации

 Гибкость
 Экономия ресурсов

20
API
API. Недостатки

 Разнообразие (принципы, форматы)
 Избыточность трафика

 Зависимость от чужой разработки
 Единая точка отказа

21
API
API. Принципы создания

 Описание функций (процедур)
 Описание передаваемых данных, их типов

 Описание возвращаемых данных
 Описание ошибок

22
API
API. Принципы создания

Описание данных:
WSDL — Web Services Description Language

23
API
API. Принципы создания

Описание ошибок
 Разработайте список ошибок и их описание
 Присвойте каждой ошибке свой код
 Не экономьте на ошибках!

24
API
API. О чем нужно помнить

 Журналы запросов
 Минимизация трафика и пакетные вызовы

 Версионность

25
API
API. Версионность

 Как получится
 Обратная совместимость

 Версии вызовов

26
API
API. Передача метода и версии

 Заголовки HTTP
 Заголовки вызовов

 Часть URL

27
API
API. Передача метода и версии

 Заголовки и тело HTTP:
PUT /shop/item/
X-API-Version: 1.2
id: 15

28
API
API. Передача метода и версии
 Заголовки вызовов
{
options: {
method: ”get_shop_item”,
version: “1.2”
},
params: {

shop_id: 15
}
}
29
API
API. Передача метода и версии

 Часть URL
GET /api/1.2/orders/list/

30
API
API. Форматы ответа

 TEXT
 JSON

 XML

31
API
API. Технологии

 REST
 RPC

32
Безопасность

 Эпидемии

 Бэкдоры
 Проверка входных данных
 Инъекции, XSS итп
 Целостность данных

 Проверка авторизации пользователя

33
Резюме
 Не изобретайте велосипеды
 Всё написано до нас

 Ускоряйте разработку, где это возможно
 Стандартизуйте инструменты работы с сервисом

 Следите за безопасностью

34
Вопросы?
Максим Бабич
tpark@maxbabich.ru
+7 916 9415275

Разработка веб-сервисов осень 2013 лекция 8