В последний раз я сталкивался с сервисом на основе SOAP во время моей стажировки в финансовой фирме в 2013 году. Именно тогда я начал свою карьеру в IT. Я помню, что у меня был некоторый учебный материал по SOAP на одном из моих инженерных курсов. Помимо этого, я не использовал SOAP в течение своей карьеры.
Я спрашиваю об этом, поскольку вопрос «Разница между SOAP и REST» возник в одном из моих недавних интервью. Из того, что я знаю (и что я нашел в Google), SOAP - это протокол с тесной связью между клиентом и сервером для обмена информацией, который тесно связан с бизнес-логикой. Принимая во внимание, что REST является более гибкой архитектурой без сохранения состояния для передачи данных.
Может кто-нибудь поправить меня, если я ошибаюсь по поводу этой разницы между SOAP и REST? Кроме того, каково современное значение SOAP? Люди все еще разрабатывают новые API-интерфейсы на основе SOAP, или это в основном наследие?
источник
Ответы:
ОТДЫХ - это действительно архитектурный стиль. SOAP - это протокол данных. Различие важно; Вы не можете сравнить их напрямую.
Основная цель REST - представлять ресурсы в Интернете и предоставлять механизмы для их обнаружения. Напротив, SOAP используется для обмена структурированными данными между компьютерами, и это все, что он действительно делает.
Обратите внимание, что вам на самом деле не нужен REST для создания отношений клиент / сервер между двумя компьютерами в Интернете. Все, что вам нужно, - это механизм, который передает JSON или XML, и вам это даже не нужно, если вы хотите быть несовместимыми со всеми остальными.
Тем не менее, SOAP потерял популярность для новых общедоступных API-интерфейсов, хотя он все еще широко используется для приложений B2B, поскольку с ним можно определить «контракт данных». Веб-сервисы JSON обладают тем преимуществом, что они довольно легкие и гибкие, и, поскольку Javascript распознает JSON изначально, это естественный выбор для браузеров.
Но на самом деле все это не имеет ничего общего с REST.
Дальнейшее чтение
REST лучше, чем SOAP? (хорошая статья, даже если она неправильно называет REST протоколом).
Модель зрелости Ричардсона
источник
REST гораздо более ограничен, чем SOAP, что является его сильной стороной и причиной его популярности.
В SOAP набор разрешенных операций и набор разрешенных типов данных практически безграничны. SOAP - это протокол удаленных процедур, который используется для предоставления локальных API-интерфейсов по всей сети без потери точности. Это сделало SOAP популярным в корпоративных средах, где сложные транзакционные системы должны были взаимодействовать по сети, не теряя при этом точности. Это богатство в возможностях также является недостатком SOAP, потому что делает API-интерфейс SOAP настолько громоздким для понимания и использования, что для его понимания требуется автоматизированный инструментарий в виде клиентских библиотек WSDL и SOAP. Более того, раскрытие полного богатства базовой системы непривлекательно в общедоступных API, где вы хотите предоставить абстракции, которые позволят вам развить базовую систему без необходимости ломать или создавать версии вашего API.
REST + JSON приобрел популярность именно благодаря своей простоте. Он определяет ограниченный набор операций с ограниченным набором типов данных, требуя, чтобы разработчик API тщательно проектировал абстракции, которые вписываются в этот ограниченный словарь, и действительно продумывал отображение бизнес-области на ресурсы REST. API-интерфейс REST прост для понимания и использования без каких-либо специальных инструментов. Для общедоступного API, где ваши пользователи API могут обладать всеми уровнями навыков и знаний, это именно то, что вам нужно, поэтому все API, которые вы видите в Интернете, переходят на REST. SOAP относится к корпоративным ситуациям, где все еще есть желание и необходимость обмениваться сложными API-интерфейсами между системами. Тем не мение,
По сути, люди поняли, что набор ограничений, которые вы должны применить к своему дизайну API, чтобы сделать API простым и абстрактным, чтобы его можно было легко обслуживать и использовать, - это именно тот набор ограничений, который вводит REST, что эффективно нейтрализует SOAP. Преимущества оставляя вас только с его недостатками. Вы можете создать упрощенный API с SOAP, но его никогда не будет так же легко использовать, как REST, поэтому на практике каждый выбирает REST.
источник
Нельзя сравнивать REST и SOAP. REST - это архитектурный стиль, тогда как SOAP - это протокол.
К сожалению, REST стал разговорным синонимом службы RESTful HTTP, что означает реализацию архитектуры в стиле REST с протоколом HTTP как (приложение).
REST основан на следующих принципах (ограничениях и элементах) (в скобках - реализация в RESTful HTTP) [1] .
С другой стороны, многие имеют в виду, что SOAP - это веб-сервис, основанный на WSDL и SOAP, которые являются частью архитектуры веб-сервиса W3C [2] .
SOAP является стандартом W3C и используется в качестве формата обмена информацией в веб-сервисах W3C. Эти веб-сервисы были - особенно во время ажиотажа SOA (сервис-ориентированных архитектур) примерно в 2008 году (+ - 3 года) - и (к сожалению) до сих пор используются в основном в корпоративных приложениях.
Это имеет несколько причин. Тогда RESTful HTTP не был известен, и его неправильно поняли. К сожалению, это все еще неправильно поняли, посмотрите на другие ответы
Кроме того, SOAP (и WSDL) являются частью стека протоколов веб-службы W3C, который обеспечивает еще больше стандартов для реализации веб-службы.
Так что да, есть еще и будут будущие системы, которые используют SOAP (по крайней мере, в корпоративных системах, в основном за дверями). Но большинство сейчас пытается сделать что-то вроде «ОТДЫХА».
Сказать, что REST является более гибкой архитектурой без сохранения состояния для передачи данных, не является хорошим объяснением. Проще говоря, REST - это стиль архитектуры с конкретными ограничениями и элементами. Принимая во внимание, что SOAP - это протокол обмена информацией.
Как я уже писал, вы не можете сравнить их. Но вы можете сравнить веб-службу RESTful HTTP с веб-службой SOAP / WSDL.
источник