Слайд 3Web сервисы
Web-сервис (служба) – программа, которая организовывает взаимодействие между сайтами. Информация с
![Web сервисы Web-сервис (служба) – программа, которая организовывает взаимодействие между сайтами. Информация](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-2.jpg)
одного портала передается на другой.
Слайд 4Web сервисы
Например, есть авиакомпания. У нее много рейсов, соответственно, много билетов. Информацию
![Web сервисы Например, есть авиакомпания. У нее много рейсов, соответственно, много билетов.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-3.jpg)
через веб-службу она передает сайту-агрегатору тур-путешествий. Пользователь, который заходит на агрегатор, сможет прямо там купить билеты этой авиакомпании.
Слайд 5Web сервисы
Другой пример веб-сервисов — это сайт отслеживания погоды, который содержит сведения
![Web сервисы Другой пример веб-сервисов — это сайт отслеживания погоды, который содержит](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-4.jpg)
о метеоусловиях в конкретном городе или по стране в целом. Данная информация также часто используется сторонними приложениями.
Слайд 6Web сервисы
Информация в интернете разнородна. Сайты управляются разными системами. используются разные протоколы
![Web сервисы Информация в интернете разнородна. Сайты управляются разными системами. используются разные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-5.jpg)
передачи и шифрования. Веб-сервисы упрощают обмен информацией между разными площадками.
Слайд 7Архитектура и протоколы Web-сервисов
На сегодняшний день наибольшее распространение получили следующие протоколы реализации
![Архитектура и протоколы Web-сервисов На сегодняшний день наибольшее распространение получили следующие протоколы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-6.jpg)
веб-сервисов:
SOAP (Simple Object Access Protocol)
REST (Representational State Transfer)
Слайд 8Архитектура и протоколы Web-сервисов
![Архитектура и протоколы Web-сервисов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-7.jpg)
Слайд 9Архитектура и протоколы Web-сервисов
SOAP более применим в сложных архитектурах, где взаимодействие с
![Архитектура и протоколы Web-сервисов SOAP более применим в сложных архитектурах, где взаимодействие](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-8.jpg)
объектами выходит за рамки теории CRUD, а вот в тех приложениях, которые не покидают рамки данной теории, вполне применимым может оказаться именно REST ввиду своей простоты и прозрачности.
Слайд 10Архитектура и протоколы Web-сервисов
Если любым объектам вашего сервиса не нужны более сложные
![Архитектура и протоколы Web-сервисов Если любым объектам вашего сервиса не нужны более](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-9.jpg)
взаимоотношения, кроме: «Создать», «Прочитать», «Изменить», «Удалить» (как правило — в 99% случаев этого достаточно), возможно, именно REST станет правильным выбором.
Кроме того, REST по сравнению с SOAP, может оказаться и более производительным, так как не требует затрат на разбор сложных XML команд на сервере (выполняются обычные HTTP запросы — PUT, GET, POST, DELETE). Хотя SOAP, в свою очередь, более надежен и безопасен.
Слайд 11Архитектура и протоколы Web-сервисов
Важно понимать, что REST – это не протокол и
![Архитектура и протоколы Web-сервисов Важно понимать, что REST – это не протокол](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-10.jpg)
не стандарт, а архитектурный стиль. У этого стиля есть свои принципы.
Give every “thing” an ID.
Очень желательно.
Link things together.
Например, в страницу (представление) о Mercedes C218 хорошо бы добавить ссылку на страницу конкретно о двигателе данной модели, чтобы желающие могли сразу туда перейти, а не тратить время на поиск этой самой страницы.
Слайд 12Архитектура и протоколы Web-сервисов
3. Use standard methods.
Имеется в виду, экономьте свои силы
![Архитектура и протоколы Web-сервисов 3. Use standard methods. Имеется в виду, экономьте](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-11.jpg)
и деньги заказчика, используйте стандартные методы 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 сервис должен быть как идеальный
![Архитектура и протоколы Web-сервисов 5. Communicate statelessly. Да, RESTful сервис должен быть](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-12.jpg)
суд – его не должно интересовать ни прошлое подсудимого (клиента), ни будущее – он просто выносит приговор (отвечает на запрос).
RESTful (веб-)сервис всего лишь означает сервис, реализованный с использованием принципов REST
Слайд 14Сравнение подходов SOAP и REST
1. SOAP – это целое семейство протоколов и
![Сравнение подходов SOAP и REST 1. SOAP – это целое семейство протоколов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-13.jpg)
стандартов, откуда напрямую вытекает, что это более тяжеловесный и сложный вариант с точки зрения машинной обработки. Поэтому REST работает быстрее.
2. SOAP используют HTTP как транспортный протокол, в то время как REST базируется на нем.
3. Есть мнение, что разработка RESTful сервисов намного проще.
4. SOAP - только XML, REST - любые типы данных, например удобный JSON
5. «REST vs SOAP» можно перефразировать в «Простота vs Стандарты»
6. SOAP не кэшируется на сервере (так как использует HTTP как транспортный протокол)
Слайд 15Архитектура и протоколы Web-сервисов
Приведу пару примеров на понимание разницы между подходами.
Букмекерская контора
![Архитектура и протоколы Web-сервисов Приведу пару примеров на понимание разницы между подходами.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-14.jpg)
заказала сервис для работы с футбольной статистикой. Пользовательский функционал – получить список матчей, получить детали о матче. Для редакторов – редактировать (Create, Edit, Delete) список матчей, редактировать детали матча.
Для такой задачи однозначно надо выбирать подход REST и получать бенефиты от его простоты и естественности во взаимодействии с HTTP.
Слайд 16Архитектура и протоколы Web-сервисов
Все очень просто! Теперь пример посложнее.
Та же букмекерская
![Архитектура и протоколы Web-сервисов Все очень просто! Теперь пример посложнее. Та же](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-15.jpg)
контора захотела API для ставок на live матчи. Эта процедура включает в себя многочисленные проверки, например, продолжает ли ставка быть актуальной, не изменился ли коэффициент, не превышена ли максимальная сумма ставки для маркета. После этого происходит денежная транзакция, результаты которой записываются в основную и в резервные базы данных. Лишь после этого клиенту приходит ответ об успешности операции.
Здесь явно прослеживается ориентация на операции, имеются повышенные требования к безопасности и устойчивости приложения, поэтому целесообразно использовать SOAP.
Слайд 17XML & JSON
JSON (англ. JavaScript Object Notation) — формат обмена данными, легко
![XML & JSON JSON (англ. JavaScript Object Notation) — формат обмена данными,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-16.jpg)
читаем людьми, легко обрабатывается и генерируется программами. Основан на подмножестве языка JavaScript.
XML (eXtensible Markup Language) — расширяемый язык разметки.
Слайд 18XML & JSON
Преимущества JSON:
Удобочитаемость кода.
Простота создания объекта данных на стороне сервера.
Простота обработки
![XML & JSON Преимущества JSON: Удобочитаемость кода. Простота создания объекта данных на](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-17.jpg)
данных на стороне клиента.
Простота расширения.
Преимущества XML:
Отладка и исправление ошибок.
Безопасность.
Слайд 19XML & JSON
Удобочитаемость кода.
XML
Subbu
Allamaraju
JSON
({ "firstName" : "Subbu",
![XML & JSON Удобочитаемость кода. XML Subbu Allamaraju JSON ({ "firstName" :](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-18.jpg)
"lastName" : "Allamaraju"
});
Слайд 20Задачи веб-сервисов
Веб-сервисы могут использоваться во многих сферах.
![Задачи веб-сервисов Веб-сервисы могут использоваться во многих сферах.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-19.jpg)
Слайд 21Задачи веб-сервисов
B2B-транзакции
Интеграция процессов идет сразу, без участия людей.
Например, пополнение каталога интернет-магазина
![Задачи веб-сервисов B2B-транзакции Интеграция процессов идет сразу, без участия людей. Например, пополнение](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-20.jpg)
новыми товарами. Их привозят на склад, и кладовщик отмечает в базе данных приход. Автоматически информация передается в интернет-магазин. И покупатель вместо пометки “Нет на складе” на карточке товара видит его количество.
Слайд 22Задачи веб-сервисов
Интеграция сервисов предприятий
Если в компании используются корпоративные программы, то веб-сервис поможет
![Задачи веб-сервисов Интеграция сервисов предприятий Если в компании используются корпоративные программы, то](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-21.jpg)
настроить их совместную работу.
Слайд 23Задачи веб-сервисов
Создание системы клиент-сервер
Сервисы используются, чтобы настроить работу клиента и сервера. Это
![Задачи веб-сервисов Создание системы клиент-сервер Сервисы используются, чтобы настроить работу клиента и](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-22.jpg)
дает преимущества:
можно продавать не само программное обеспечение, а делать платным доступ к веб-сервису;
легче решать проблемы с использованием стороннего ПО;
проще организовывать доступ к контенту и материалам сервера.
Веб-сервис — это приложение, которое упрощает техническую настройку взаимодействия ресурсов.
Слайд 24Swagger
Swagger — это набор инструментов, которые помогают описывать API. Благодаря ему пользователи
![Swagger Swagger — это набор инструментов, которые помогают описывать API. Благодаря ему](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-23.jpg)
и машины лучше понимают возможности REST API без доступа к коду. С помощью Swagger можно быстро создать документацию и отправить ее другим разработчикам или клиентам.
Слайд 25Основные подходы
Swagger предлагает два основных подхода к генерированию документации:
Автогенерация на основе кода.
Самостоятельная
![Основные подходы Swagger предлагает два основных подхода к генерированию документации: Автогенерация на основе кода. Самостоятельная разметка-написание.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-24.jpg)
разметка-написание.
Слайд 26 Swagger
Первый подход проще. Мы добавляем зависимости в проект, конфигурируем настройки и
![Swagger Первый подход проще. Мы добавляем зависимости в проект, конфигурируем настройки и](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-25.jpg)
получаем документацию. Сам код из-за этого может стать менее читабельным, документация тоже не будет идеальной. Но задача минимум решена — код задокументирован.
Чтобы пользоваться вторым подходом, нужно знать синтаксис Swagger. Описания можно готовить в формате YAML/JSON. Можно упростить эту задачу, используя Swagger Editor. Конечно, второй подход позволяет сделать документацию более качественной и кастомной для каждого конкретного проекта и его особенностей, к тому же все не так сложно как может показаться, это потребует минимальных дополнительных усилий.
Слайд 27 Curl
Что такое Curl ? Curl — это сокращение от “Client URL”.
![Curl Что такое Curl ? Curl — это сокращение от “Client URL”.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/1180735/slide-26.jpg)
Утилита доступна в большинстве систем на основе Unix и предназначена для проверки подключения к URL-адресам. Кроме того команда Curl — отличный инструмент передачи данных.
HTTP и HTTPS
FTP и FTPS
IMAP и IMAPS
POP3 и POP3S
SMB и SMBS и другие