Рельсы веб-интеграции. REST и SOAP
В каждой отрасли бизнеса, каждой компании, как правило, используется целый зоопарк ПО. Одни системы «из коробки» умеют взаимодействовать с «соседними» продуктами, другие же приходится дорабатывать. За десятилетия существования веба как отрасли сформировались следующие практики межсетевого взаимодействия:
- Обмен файлами по FTP.
- Неструктурированные HTTP-запросы, договорённости между разработчиками.
- Веб-сервисы.
- Экзотика: сокеты, порты, бинарные объекты.
В данной статье мы поговорим о веб-сервисах. Чем они отличаются от прочих способов и какие они бывают.
Что такое веб-сервисы?
Веб-сервисы (или веб-службы) — это технология, позволяющая системам обмениваться данными друг с другом через сетевое подключение. Обычно веб-сервисы работают поверх протокола HTTP или протокола более высокого уровня. Веб-сервис — просто адрес, ссылка, обращение к которому позволяет получить данные или выполнить действие.
Главное отличие веб-сервиса от других способов передачи данных: стандартизированность. Приняв решение использовать веб-сервисы, можно сразу переходить к структуре данных и доступным функциям. Например, в SOAP (как более строгом протоколе), уже решён вопрос уведомления об ошибках.
Самые известные способы реализации веб-сервисов:
- XML-RPC (XML Remote Procedure Call) — протокол удаленного вызова процедур с использованием XML. Прародитель SOAP. Предельно прост в реализации.
- SOAP (Simple Object Access Protocol) — стандартный протокол по версии W3C. Четко структурирован и задокументирован.
- JSON-RPC (JSON Remote Procedure Call) — более современный аналог XML-RPC. Основное отличие — данные передаются в формате JSON.
- REST (Representational State Transfer) — архитектурный стиль взаимодействия компьютерных систем в сети основанный на методах протокола HTTP.
- Специализированные протоколы для конкретного вида задач, такие как GraphQL.
- Менее распространенный, но более эффективный gRPC, передающий данные в бинарном виде и использующий HTTP/2 в качестве транспорта.
Остальные протоколы не так широко распространены. Подробно рассмотрены в статье будут SOAP и REST.
SOAP
SOAP (Simple Object Access Protocol) — данные передаются в формате XML.
- отраслевой стандарт по версии W3C;
- наличие строгой спецификации;
- широкая поддержка в продуктах Microsoft,
- однозначность.
Любое сообщение в протоколе SOAP — это XML документ, состоящий из следующих элементов (тегов):
- Envelope. Корневой обязательный элемент. Определяет начало и окончание сообщения.
- Header. Необязательный элемент — заголовок. Содержит элементы, необходимые для обработки самого сообщения. Например, идентификатор сессии.
- Body. Основной элемент, содержит основную информацию сообщения. Обязательный.
- Fault. Элемент, содержащий информацию об ошибках, возникающих в процессе обработки сообщения. Необязательный.
REST
REST (Representational State Transfer) — на самом деле архитектурный стиль, а не протокол. В отличие от SOAP, REST не подкреплен официальным стандартом. Фактически, он основывается на соглашениях. Веб-сервис, построенный с учетом всех требований и ограничений архитектурного стиля, можно назвать RESTful веб-сервисом.
REST не использует конвертацию данных при передаче, данные передаются в исходном виде — это снижает нагрузку на клиент веб-сервиса, но увеличивает нагрузку на сеть. Управление данными происходит с помощью методов HTTP:
- GET — получить данные;
- POST — добавить данные;
- PUT — изменить данные;
- DELETE — удалить данные.
Использование этих методов позволяет реализовать типичный CRUD (Create/Read/Update/Delete) для любой информации. Но это лишь соглашение: часто используются только 2 метода: GET для получения и POST для всего остального. Разобраться поможет такое понятие, как REST-Patterns. Паттерны связывают HTTP методы с тем, что они делают.
- простота реализации;
- экономичность в плане ресурсов;
- не требует программных надстроек (json_decode есть почти в каждом языке).
Что же использовать?
Вопрос «Какой способ реализации использовать?» необходимо рассматривать в контексте реализуемой системы и ее ограничений. Обычно, SOAP используется в крупных корпоративных системах со сложной логикой, когда требуются четкие стандарты, подкрепленные временем. XML-RPC, пожалуй, устарел и не имеет смысла ввиду наличия собрата JSON-RPC. RPC-протоколы подойдут для совсем простых систем с малым количеством единиц информации и API-методов.
Если же вы разрабатываете публичное API и логика взаимодействия во многом покрывается четверкой методов CRUD — смело выбирайте REST. Он наиболее популярен в WEB. Яндекс, Google и другие используют именно его для своего API.
Веб-сервисы в живом производстве
Разработка веб-сервисов — типичная задача интеграции. ИНТЕРВОЛГА, как веб-интегратор, регулярно сталкивается с задачами разработки веб-сервисов и успешно с ними справляется. Наши сайты были и SOAP/REST серверами, и SOAP/REST клиентами.
Успешным примером внедрения веб-сервисов является проект Enterprise-уровня — Личный кабинет клиентов компании Евраз Металл Инпром. Все функции личного кабинета основываются на взаимодействии с удаленным SOAP веб-сервисом. Сайт выступает клиентом. В процессе эволюции в угоду безопасности сайт переквалифицировался в SOAP-сервер, а учетная система в SOAP-клиента.
Еще один личный кабинет для клиентов компании Евраз — еще один пример сайта в качестве клиента удаленного SOAP веб-сервиса.
Если у вас есть потребность организовать взаимодействие с веб-сервисом, сделать из сайта REST/SOAP/RPC клиент или сервер, пишите нам.
Подведем итог, выделив, два важных тезиса в пользу выбора веб-сервисов в качестве «рельс» для веб-интеграции.
- Наш опыт неоднократно демонстрировал, что создание веб-сервисов, в реальном времени передающих необходимые данные между сайтом и другим ПО — лучшее решение, чем классические обмены по расписанию. Такой подход проще сопровождать, вести его отладку, это более эффективная трата времени программиста, чем проектирование и разработка сложного двунаправленного обмена с кучей сущностей.
- Можно провести аналогию с эволюцией разработки сайтов. Когда-то, на заре сайтостроения, каждый разработчик делал сайт с нуля на той технологии, которую мог знать лишь он один. Это порождало проблемы в развитии таких сайтов. Как работали такие сайты — знал только автор кода. Со временем появлялись фреймворки и CMS. Разработку начинали не с нуля, а с известных широкой массе разработчиков «заготовок» — стандартных решений стандартных проблем с возможность расширения и углубления.
Технологии разработки WEB-сервисов
Ключевые технологии для веб-сервиса обеспечивают функциональность их работы в будущем. Абсолютно все web-сервисы основываются на применении 4-х основных технологий (XML, SOAP, WSDL,UDDI). Они тесно связаны между собой, что и позволяет запускать работу сервиса. Заказать разработку веб сервиса можно здесь.
Основные особенности разработки веб-сервисов
Рассмотрение технологии для сервисов необходимо начать с протоколов, которые применяются для их вызова по сети. Веб-сервисы изначально базируются с применением технологии HTTP, но разработчик может включить в создание сервиса и иные виды протоколов, например FTP, SMTP. Однако протокол HTTP является более простым, и подразумевает логическую последовательность действия запрос — ответ. То есть клиент ищет соединение с сервисом, и соответственно отправляет запрос в особом формате для протокола. В результате сервер обрабатывает запрос и отвечает на него.
Чтобы понять, что такое веб-сервис, необходимо рассмотреть их особенности. Давайте посмотрим на существующие сайты, и попробуем разделить их на группы по своему предназначению. Вы сразу же увидите отличия.
Например, сегодня встречаются сайты визитки, корпоративные сайты, интернет-магазины, лендинги, блоги, соцсети, форумы. И все перечисленные названия являются представителями одной большой категории, которая называется информационные сайты.
Веб-сервиса являются теми же сайтами, но другого назначения. К их числу относятся доски объявлений, готовые решения для бизнеса, торговые маркетплейсы, системы бронирования и так далее. Веб-сервис предоставляет возможность пользователю совершать какое-либо действие, получать услуги, и успешно осуществлять поиск информации. Именно поэтому web-сервиса для пользователей являются программой или приложением.
Каждый сервис должен быть полезным, и помогать своим пользователям решать проблемы быстро. Именно поэтому отличный сервис выглядит всегда лаконично с минимальным количеством дополнительных деталей. Для создания эффективного сервиса необходимо затратить немало внимания и средств.
Основные этапы разработки веб-сервисов включают в себя:
Перечисленные аспекты требуют работы целой команды профессионалов. А вот основные технологии включают в себя применение популярных языков программирования, фреймворки, базы данных, и операционные системы.
Создание веб-ресурса ответственная задача, которая по силам специалистам в области программирования, и от тщательной проработки сервиса будет зависеть дальнейшая его работа.