Рельсы веб-интеграции — REST и SOAP

Александр П.
Подписаться
В каждой отрасли бизнеса, каждой компании, как правило, используется целый зоопарк ПО, например: сайт на 1С-Битрикс, CRM 1С-Битрикс24, учетная система на базе 1С. Одни системы “из коробки” умеют взаимодействовать с «соседними» продуктами, другие же приходится дорабатывать. За десятилетия существования веба как отрасли сформировались следующие практики межсетевого взаимодействия:
  1. Обмен файлами по FTP;
  2. Неструктурированные HTTP-запросы, договорённости между разработчиками;
  3. Веб-сервисы;
  4. Экзотика: сокеты, порты, бинарные объекты.
В данной статье мы поговорим о веб-сервисах REST и SOAP — их отличиях от прочих способов и какими они бывают.

Что такое веб-сервисы?

Веб-сервисы (или веб-службы) — это технология, позволяющая системам обмениваться данными друг с другом через сетевое подключение. Обычно веб-сервисы работают поверх протокола 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;
  • однозначность.
Недостатки:
  • сложность реализации;
  • сложность / ресурсоемкость парсинга XML-данных.
Любое сообщение в протоколе SOAP — это XML документ, состоящий из следующих элементов (тегов):
  • Envelope. Корневой обязательный элемент. Определяет начало и окончание сообщения;
  • Header. Необязательный элемент — заголовок. Содержит элементы, необходимые для обработки самого сообщения. Например, идентификатор сессии;
  • Body. Основной элемент, содержит основную информацию сообщения. Обязательный;
  • Fault.Элемент, содержащий информацию об ошибках, возникающих в процессе обработки сообщения. Необязательный.
Пример SOAP запроса:
Пример soap запроса
Пример SOAP ответа:
Пример soap ответа

REST

REST (Representational State Transfer) — на самом деле архитектурный стиль, а не протокол. В отличие SOAP от REST — подкрепление официальным стандартом. Фактически, он основывается на соглашениях. Веб-сервис, построенный с учетом всех требований и ограничений архитектурного стиля, можно назвать REST ful веб-сервисом.

REST не использует конвертацию данных при передаче, данные передаются в исходном виде — это снижает нагрузку на клиент веб-сервиса, но увеличивает нагрузку на сеть. Управление данными происходит с помощью методов HTTP:
  • GET — получить данные;
  • POST — добавить данные;
  • PUT — изменить данные;
  • DELETE — удалить данные.
Использование этих методов позволяет реализовать типичный CRUD (Create/Read/Update/Delete) для любой информации. Но это лишь соглашение: часто используются только 2 метода: GET для получения и POST для всего остального. Разобраться поможет такое понятие, как REST-Patterns. Паттерны связывают HTTP методы с тем, что они делают.

Преимущества:
  • простота реализации;
  • экономичность в плане ресурсов;
  • не требует программных надстроек (json_decode есть почти в каждом языке).
Недостатки:
  • отсутствие спецификации;
  • неоднозначность методов управления данными.
Пример REST запроса:
Пример REST запроса
Пример REST ответа:
Пример REST ответа

Что же использовать?

Вопрос “Какой способ реализации использовать?” необходимо рассматривать в контексте реализуемой системы и ее ограничений. Обычно, 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 клиент или сервер, обращайтесь к нам.

Подведем итог, выделив, два важных тезиса в пользу выбора веб-сервисов в качестве «рельс» для веб-интеграции:
  1. Наш опыт неоднократно демонстрировал, что создание веб-сервисов, в реальном времени передающих необходимые данные между сайтом и другим ПО — лучшее решение, чем классические обмены по расписанию. Такой подход проще сопровождать, вести его отладку, это более эффективная трата времени программиста, чем проектирование и разработка сложного двунаправленного обмена с кучей сущностей.
  2. Можно провести аналогию с эволюцией разработки сайтов. Когда-то, на заре сайтостроения, каждый разработчик делал сайт с нуля на той технологии, которую мог знать лишь он один. Это порождало проблемы в развитии таких сайтов. Как работали такие сайты — знал только автор кода. Со временем появлялись фреймворки и CMS. Разработку начинали не с нуля, а с известных широкой массе разработчиков “заготовок” — стандартных решений стандартных проблем с возможность расширения и углубления. Также и с обменом данными. Не нужно тратить месяцы на объяснение новому сотруднику и самому себе, как работает обмен. Есть стандарт, обмен работает по нему.
Больше информации про интранет-системы в нашем телеграмм-канале: https://t.me/r4intranet.
Оцените статью
09.07.2019
Понравилась статья?
Поделитесь ссылкой с друзьями и коллегами!

Статьи по теме

23.06.2022
Увеличение скорости обновления информации в 100 раз за счет миграции данных из самописного хранилища на базе СУБД PostgreSQL Ранее мы уже описывали архитектуру мультиязычного сайта с большим количеством иностранных дилеров для компании Levenhuk. В этой статье рассказываем, как реш...
23.05.2022
Как увеличить конверсию интернет-магазина обуви до 3.9% Вступление Начну с конца. Вот таких показателей мы достигли: начинали с таких: Если интрига сработала, и вопрос “Как увеличить конверсию интернет-...
18.05.2022
Обмен контрагентами между 1С и сайтом с сохранением структуры Партнеров, Контрагентов, Юридических лиц и Контактов O чем речь? Мы сделали B2B-Платформу для предприятий с партнерами-оптовиками и задачами автоматизации торговли. Некоторые Пользовательские сц...
18.05.2022
Чат-бот Программы Лояльности в TelegramЛояльность клиентов — важный показатель в деятельности любой организации. Чтобы покупатель оставался доволен продукцией, важно внимание и забота со стороны комп...
13.05.2022
Кейс: Личный кабинет партнера крупнейшего поставщика медицинских изделий В 2019 году к нам обратилась крупная компания, занимающаяся поставкой медицинских изделий. Причина обращения была типична для бизнеса, работающего с крупно...
06.05.2022
Топ-7 платформ автоматизации оптовой торговли - Выбор лучшейЭта статья будет полезна владельцам бизнеса, коммерческим директорам, а также руководителям отделов по оптовой торговле оборудованием, материалам и продукцией ...

Мы работаем по одному из двух форматов:

  • аренда команды (от 2 человек, не менее 3 месяцев);
  • итерации с фиксированной ценой (1-3 месяца длительностью).

ИНТЕРВОЛГА предоставляет:

  • регулярные онлайн-планерки с заказчиком;
  • квалифицированных специалистов;
  • организованную команду (находятся в одном помещении, что упрощает решение рабочих вопросов);
  • полную прозрачность и регулярность отчетов о результатах.

Для доработок и развития мы предлагаем формат 100 часов в месяц. Что можно сделать за это время:

  • новые нетиповые страницы или раздел;
  • 2 отчета с индивидуальными настройками;
  • 3-5 веб-сервисов интеграции;
  • замудренный калькулятор и т.п.

Поддержка «чтобы все работало как часы» стоит 45 тысяч рублей в месяц и описана тут.

Хочешь получать лучшие статьи от INTERVOLGA раз в месяц?
Подпишись на рассылку — спамить не будем