35
Разработка веб-сервисов Беседа 8: Инструментарий. Экспорт и импорт решений

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

Embed Size (px)

DESCRIPTION

 

Citation preview

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

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

Беседа 8: Инструментарий. Экспорт и импорт решений

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

План занятия

О велосипедах

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

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

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

2

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

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

Подходы к разработке

Берем готовый движок

Пишем с нуля

3

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

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

Подходы к разработке

Пишем с нуля. Этапы

Получить данные из адресной строки / формы

Проверить данные

Выполнить действие

Отдать результат в браузер

4

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

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

Подходы к разработке

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

5

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

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

Библиотеки

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

6

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

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

Библиотеки

Обработка текста

Шаблонизаторы

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

Работа с почтой

и многое-многое другое

7

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

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

Библиотеки. Сборники кода

Perl — CPAN (~126800 модулей)

PHP — PECL/PEAR (~600)

Python — PyPI (~36200)

Ruby — RubyGems (~65200)

8

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

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

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

Работа с API хранилища (драйверы, ODBC, JDBC итп)

ORM — Object Relational Mapping или «объектно-реляционная проекция»

9

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

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

Шаблонизаторы

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

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

10

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

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

Шаблонизаторы. Возможности

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

Переменные

Циклы

Логические конструкции (if, else…)

Обработка данных (escape, trim etc)

Включение шаблонов

11

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

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

Шаблонизаторы. Различия

Синтаксис

Скорость работы

Интерпретация

Компиляция

12

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

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

Шаблонизаторы. Примеры

Perl Template::Toolkit

HTML::Template

PHP Smarty

Twig

Python Kid

CTPP (Perl, PHP, Python)

13

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

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

Фреймворки

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

В отличие от библиотек, влияют на архитектуру приложений.

14

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

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

Основные задачи фреймворка

Обработка входных данных

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

Вывод данных

15

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

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

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

Пре- и пост-обработка данных

Создание и валидация форм

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

16

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

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

Примеры фреймворков

PHP

Yii

Symphony

Zend

Python

Django

17

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

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

Примеры фреймворков

Perl

Mojolicious

Dancer

Catalyst

Ruby

Ruby-on-Rails

18

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

API

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

Web API — набор HTTP-запросов и HTTP-ответов определенной структуры

19

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

API

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

Стандартизация

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

Гибкость

Экономия ресурсов

20

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

API

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

Разнообразие (принципы, форматы)

Избыточность трафика

Зависимость от чужой разработки

Единая точка отказа

21

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

API

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

Описание функций (процедур)

Описание передаваемых данных, их типов

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

Описание ошибок

22

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

API

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

Описание данных:

WSDL — Web Services Description Language

23

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

API

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

Описание ошибок

Разработайте список ошибок и их описание

Присвойте каждой ошибке свой код

Не экономьте на ошибках!

24

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

API

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

Журналы запросов

Минимизация трафика и пакетные вызовы

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

25

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

API

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

Как получится

Обратная совместимость

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

26

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

API

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

Заголовки HTTP

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

Часть URL

27

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

API

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

Заголовки и тело HTTP:

PUT /shop/item/

X-API-Version: 1.2

id: 15

28

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

API

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

Заголовки вызовов{

options: {

method: ”get_shop_item”,

version: “1.2”

},

params: {

shop_id: 15

}

}

29

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

API

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

Часть URL

GET /api/1.2/orders/list/

30

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

API

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

TEXT

JSON

XML

31

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

API

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

REST

RPC

32

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

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

Эпидемии

Бэкдоры

Проверка входных данных

Инъекции, XSS итп

Целостность данных

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

33

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

Резюме

Не изобретайте велосипеды

Всё написано до нас

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

Стандартизуйте инструменты работы с сервисом

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

34

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

Вопросы?

Максим Бабич

[email protected]

+7 916 9415275