SOAP полезен с точки зрения инструментов, потому что WSDL так легко используется инструментами. Таким образом, вы можете получить клиентов Web Service для вас на вашем любимом языке.
REST хорошо работает с веб-страницами AJAX'ы. Если вы сохраняете свои запросы простыми, вы можете делать сервисные вызовы прямо из вашего JavaScript, и это очень удобно. Старайтесь держаться подальше от каких-либо пространств имен в вашем ответном XML, я видел, как браузеры душат их. Итак, xsi: type, вероятно, не будет работать для вас, не слишком сложные XML-схемы.
REST также имеет лучшую производительность. Требования к процессору для кода, генерирующего ответы REST, как правило, ниже, чем те, что демонстрируют платформы SOAP. И, если у вас есть утки генерации XML на стороне сервера, вы можете эффективно передавать XML клиенту. Итак, представьте, что вы читаете строки курсора базы данных. Когда вы читаете строку, вы форматируете ее как элемент XML и записываете ее непосредственно потребителю сервиса. Таким образом, вам не нужно собирать все строки базы данных в памяти перед тем, как начинать записывать свои выходные данные XML - вы читаете и пишете одновременно. Изучите новые движки шаблонов или XSLT, чтобы потоковая передача работала на REST.
SOAP, с другой стороны, имеет тенденцию генерироваться сервисами, генерируемыми инструментами, как большой двоичный объект и только потом записываться. Заметьте, это не абсолютная истина, есть способы получить потоковые характеристики из SOAP, например, с помощью вложений.
Мой процесс принятия решения следующий: если я хочу, чтобы мой сервис легко читался потребителями, а сообщения, которые я пишу, будут среднего или маленького размера (10 МБ или меньше), и я не возражаю против сжигания некоторого дополнительного ЦП циклы на сервере, хожу с SOAP. Если мне нужно обслуживать AJAX в веб-браузерах, или нужно что-то для потоковой передачи, или мои ответы гигантские, я отправляюсь в REST.
Наконец, существует множество отличных стандартов, созданных на основе SOAP, таких как WS-Security и получение веб-служб с сохранением состояния, к которым можно подключиться, если вы используете правильные инструменты. Такие вещи действительно имеют значение и могут помочь вам удовлетворить некоторые волосатые требования.