Слайд 3Web сервисы
Web-сервис (служба) – программа, которая организовывает взаимодействие между сайтами. Информация с

одного портала передается на другой.
Слайд 4Web сервисы
Например, есть авиакомпания. У нее много рейсов, соответственно, много билетов. Информацию

через веб-службу она передает сайту-агрегатору тур-путешествий. Пользователь, который заходит на агрегатор, сможет прямо там купить билеты этой авиакомпании.
Слайд 5Web сервисы
Другой пример веб-сервисов — это сайт отслеживания погоды, который содержит сведения

о метеоусловиях в конкретном городе или по стране в целом. Данная информация также часто используется сторонними приложениями.
Слайд 6Web сервисы
Информация в интернете разнородна. Сайты управляются разными системами. используются разные протоколы

передачи и шифрования. Веб-сервисы упрощают обмен информацией между разными площадками.
Слайд 7Архитектура и протоколы Web-сервисов
На сегодняшний день наибольшее распространение получили следующие протоколы реализации

веб-сервисов:
SOAP (Simple Object Access Protocol)
REST (Representational State Transfer)
Слайд 8Архитектура и протоколы Web-сервисов

Слайд 9Архитектура и протоколы Web-сервисов
SOAP более применим в сложных архитектурах, где взаимодействие с

объектами выходит за рамки теории CRUD, а вот в тех приложениях, которые не покидают рамки данной теории, вполне применимым может оказаться именно REST ввиду своей простоты и прозрачности.
Слайд 10Архитектура и протоколы Web-сервисов
Если любым объектам вашего сервиса не нужны более сложные

взаимоотношения, кроме: «Создать», «Прочитать», «Изменить», «Удалить» (как правило — в 99% случаев этого достаточно), возможно, именно REST станет правильным выбором.
Кроме того, REST по сравнению с SOAP, может оказаться и более производительным, так как не требует затрат на разбор сложных XML команд на сервере (выполняются обычные HTTP запросы — PUT, GET, POST, DELETE). Хотя SOAP, в свою очередь, более надежен и безопасен.
Слайд 11Архитектура и протоколы Web-сервисов
Важно понимать, что REST – это не протокол и

не стандарт, а архитектурный стиль. У этого стиля есть свои принципы.
Give every “thing” an ID.
Очень желательно.
Link things together.
Например, в страницу (представление) о Mercedes C218 хорошо бы добавить ссылку на страницу конкретно о двигателе данной модели, чтобы желающие могли сразу туда перейти, а не тратить время на поиск этой самой страницы.
Слайд 12Архитектура и протоколы Web-сервисов
3. Use standard methods.
Имеется в виду, экономьте свои силы

и деньги заказчика, используйте стандартные методы HTTP, например GET
http://www.example.com/cars/00345
для получения данных вместо определения собственных методов вроде getCar?id=00345.
4. Resources can have multiple representations.
Одни и те же данные можно вернуть в XML или JSON для программной обработки или обернутыми в красивый дизайн для просмотра человеком.
Слайд 13Архитектура и протоколы Web-сервисов
5. Communicate statelessly.
Да, RESTful сервис должен быть как идеальный

суд – его не должно интересовать ни прошлое подсудимого (клиента), ни будущее – он просто выносит приговор (отвечает на запрос).
RESTful (веб-)сервис всего лишь означает сервис, реализованный с использованием принципов REST
Слайд 14Сравнение подходов SOAP и REST
1. SOAP – это целое семейство протоколов и

стандартов, откуда напрямую вытекает, что это более тяжеловесный и сложный вариант с точки зрения машинной обработки. Поэтому REST работает быстрее.
2. SOAP используют HTTP как транспортный протокол, в то время как REST базируется на нем.
3. Есть мнение, что разработка RESTful сервисов намного проще.
4. SOAP - только XML, REST - любые типы данных, например удобный JSON
5. «REST vs SOAP» можно перефразировать в «Простота vs Стандарты»
6. SOAP не кэшируется на сервере (так как использует HTTP как транспортный протокол)
Слайд 15Архитектура и протоколы Web-сервисов
Приведу пару примеров на понимание разницы между подходами.
Букмекерская контора

заказала сервис для работы с футбольной статистикой. Пользовательский функционал – получить список матчей, получить детали о матче. Для редакторов – редактировать (Create, Edit, Delete) список матчей, редактировать детали матча.
Для такой задачи однозначно надо выбирать подход REST и получать бенефиты от его простоты и естественности во взаимодействии с HTTP.
Слайд 16Архитектура и протоколы Web-сервисов
Все очень просто! Теперь пример посложнее.
Та же букмекерская

контора захотела API для ставок на live матчи. Эта процедура включает в себя многочисленные проверки, например, продолжает ли ставка быть актуальной, не изменился ли коэффициент, не превышена ли максимальная сумма ставки для маркета. После этого происходит денежная транзакция, результаты которой записываются в основную и в резервные базы данных. Лишь после этого клиенту приходит ответ об успешности операции.
Здесь явно прослеживается ориентация на операции, имеются повышенные требования к безопасности и устойчивости приложения, поэтому целесообразно использовать SOAP.
Слайд 17XML & JSON
JSON (англ. JavaScript Object Notation) — формат обмена данными, легко

читаем людьми, легко обрабатывается и генерируется программами. Основан на подмножестве языка JavaScript.
XML (eXtensible Markup Language) — расширяемый язык разметки.
Слайд 18XML & JSON
Преимущества JSON:
Удобочитаемость кода.
Простота создания объекта данных на стороне сервера.
Простота обработки

данных на стороне клиента.
Простота расширения.
Преимущества XML:
Отладка и исправление ошибок.
Безопасность.
Слайд 19XML & JSON
Удобочитаемость кода.
XML
Subbu
Allamaraju
JSON
({ "firstName" : "Subbu",

"lastName" : "Allamaraju"
});
Слайд 20Задачи веб-сервисов
Веб-сервисы могут использоваться во многих сферах.

Слайд 21Задачи веб-сервисов
B2B-транзакции
Интеграция процессов идет сразу, без участия людей.
Например, пополнение каталога интернет-магазина

новыми товарами. Их привозят на склад, и кладовщик отмечает в базе данных приход. Автоматически информация передается в интернет-магазин. И покупатель вместо пометки “Нет на складе” на карточке товара видит его количество.
Слайд 22Задачи веб-сервисов
Интеграция сервисов предприятий
Если в компании используются корпоративные программы, то веб-сервис поможет

настроить их совместную работу.
Слайд 23Задачи веб-сервисов
Создание системы клиент-сервер
Сервисы используются, чтобы настроить работу клиента и сервера. Это

дает преимущества:
можно продавать не само программное обеспечение, а делать платным доступ к веб-сервису;
легче решать проблемы с использованием стороннего ПО;
проще организовывать доступ к контенту и материалам сервера.
Веб-сервис — это приложение, которое упрощает техническую настройку взаимодействия ресурсов.
Слайд 24Swagger
Swagger — это набор инструментов, которые помогают описывать API. Благодаря ему пользователи

и машины лучше понимают возможности REST API без доступа к коду. С помощью Swagger можно быстро создать документацию и отправить ее другим разработчикам или клиентам.
Слайд 25Основные подходы
Swagger предлагает два основных подхода к генерированию документации:
Автогенерация на основе кода.
Самостоятельная

разметка-написание.
Слайд 26 Swagger
Первый подход проще. Мы добавляем зависимости в проект, конфигурируем настройки и

получаем документацию. Сам код из-за этого может стать менее читабельным, документация тоже не будет идеальной. Но задача минимум решена — код задокументирован.
Чтобы пользоваться вторым подходом, нужно знать синтаксис Swagger. Описания можно готовить в формате YAML/JSON. Можно упростить эту задачу, используя Swagger Editor. Конечно, второй подход позволяет сделать документацию более качественной и кастомной для каждого конкретного проекта и его особенностей, к тому же все не так сложно как может показаться, это потребует минимальных дополнительных усилий.
Слайд 27 Curl
Что такое Curl ? Curl — это сокращение от “Client URL”.

Утилита доступна в большинстве систем на основе Unix и предназначена для проверки подключения к URL-адресам. Кроме того команда Curl — отличный инструмент передачи данных.
HTTP и HTTPS
FTP и FTPS
IMAP и IMAPS
POP3 и POP3S
SMB и SMBS и другие