Под "сервисами на основе SOAP" я предполагаю, что вы имеете в виду Базовый профиль WS-I веб-сервисы. Это различие важно, поскольку SOAP можно использовать как с REST, так и с веб-службами WS-I BP. Позвольте мне объяснить.
SOAP - это формат обмена сообщениями на основе XML. Soap также определяет средства для выполнения удаленных вызовов процедур. SOAP - это открытый стандарт от W3C . SOAP не зависит от базового транспортного уровня. Часто HTTP используется в качестве транспортного уровня, но он может успешно работать по SMTP и TCP, а также другим транспортам.
REST - это архитектурный стиль (не стандартный), поэтому будьте осторожны, чтобы не сравнивать REST и SOAP напрямую, потому что вы не сравниваете яблоки с яблоками. REST берет HTTP и использует его так, как он должен был быть использован, со всеми его тонкостями и богатством. Архитектурный стиль REST может использоваться для передачи данных в любом формате - он не требует какого-либо конкретного формата данных. Так что SOAP - это отличный формат сериализации для веб-сервиса в стиле REST. Но многие люди используют JSON, XML, простой текст и многие другие форматы с REST. Вы можете счастливо обмениваться двоичными данными через REST, например, файлы изображений. Приятно то, что вы можете выбрать наиболее подходящий для вашего приложения формат данных.
Обратите внимание, что, поскольку REST является шаблоном, а не стандартом, существует много споров о том, что значит быть действительно RESTful. Существует концепция под названием Модель зрелости Ричардсона , в которой излагается ряд шагов к идеалу REST. Сравнивая с моделью Ричардсона, мы можем точно определить, насколько RESTful является конкретная реализация REST. Веб-сервисы WS-I BP находятся на уровне 0 в этом масштабе (т. Е. Совсем не очень RESTful, просто используя HTTP в качестве тупого транспортного уровня).
Я бы сказал, что при выборе REST vs Базовый профиль WS-I веб-сервисов - это зависит от вашей аудитории. Если вы разрабатываете интерфейс типа B2B в рамках предприятия, чаще всего можно увидеть веб-службы WSI-BP. Поскольку существует базовый стандарт, а также из-за зрелой поддержки корпоративных поставщиков (таких как IBM, Oracle, SAP, Microsoft) и из-за уровня поддержки инфраструктуры, особенно в .NET и Java, WSI-BP имеет большой смысл когда вам нужно быстро что-то сделать, и вы хотите, чтобы клиенты могли легко подключаться в корпоративной среде, а обмениваемые данные - это бизнес-данные, которые сериализуются в виде SOAP.
С другой стороны, если вы представляете веб-сервисы более широкой веб-аудитории, я бы сказал, что существует тенденция от WSI-BP к стилю RESTful. Поскольку REST только предполагает, что клиент поддерживает HTTP, его можно настроить для взаимодействия с максимально широкой аудиторией. REST также обеспечивает масштабируемость самой сети благодаря поддержке кеширования ресурсов и т. Д., Что делает ее доступной для большой аудитории намного лучше, чем веб-службы WSI-BP.