SOAP-сообщения в веб-сервисе на основе REST - PullRequest
9 голосов
/ 23 сентября 2011

Отказ от ответственности: Я действительно запутался между службами на основе REST и SOAP.
После прочтения многих учебных пособий (которые кажутся противоречащими друг другу) в веб-сервисе на основе REST мне стало интересно, можем ли мы / должны использовать SOAP для отправки / получения сообщений в веб-сервисе на основе REST?
Я попробовал следующие ссылки
1) http://www.ibm.com/developerworks/webservices/library/ws-restful/

2) http://rest.elkstein.org/2008/02/how-simple-is-rest.html

1 Ответ

17 голосов
/ 23 сентября 2011

Под "сервисами на основе 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.

...