Главное отличие SOAP от REST в том, что SOAP это формат обмена сообщения, а REST архитектурный подход использующий http как транспортный протокол.
SOAP использует для обмена данными xml.
Веб-сервисы, использующие SOAP в качестве протокола, используют четко структурированные сообщения, описанные в контракте WSDL. То есть если сообщение не соответствует описанным правилам, то мы получаем ошибку, в виде структурированного xml.
xml содержит в себе:
— Envelope (конверт) – корневой элемент, который определяет сообщение и пространство имен, использованное в документе
— Header (заголовок) – содержит атрибуты сообщения, например: информация о безопасности или о сетевой маршрутизации
— Body (тело) – содержит сообщение, которым обмениваются приложения
— Fault – необязательный элемент, который предоставляет информацию об ошибках, которые произошли при обработке сообщений. И запрос, и ответ должны соответствовать структуре SOAP.
WSDL — это правила по которым составляются собственно сообщения, которые отправляются к веб-приложению, у них четкая структура и правила и описаны также с помощью xml.
Например, там описаны возможности вызова методов и параметры, используемые для вызова этого метода. Каждый параметр или массив параметров четко описан, какой у него тип и название. WSDL обычно лежит по url адресу сервиса, по нему можно получить знание о методах , используемых в сервисе.
Плюсы использования SOAP:
четкая структура описания, читающая любым soap клиентом
автоматическая валидация xml
описание методов и типов в автоматическом режиме
Минусы:
большой размер сообщений
сложность и ресурсоемкость
Редко, когда корректный текст в ошибках (например, в «Честном знаке» на маркировке, непросто понять в чем же проблема по тексту ошибки).
Протестировать SOAP можно в бесплатной программке SOAP UI. Нужно знать только адрес по которому лежит wsdl. Далее подгружаете ее в программу и получаете готовые методы, использующиеся в веб сервисе, и тестируйте разные методы, вставив туда свои параметры.
SOAP и REST используются много где и в работе скорее всего придется встретится с каким то из этих протоколов. На SOAP работает много банковских сервисов и больших систем. Обычные же сайты используют REST.