SOAP-сообщения в веб-сервисе на основе REST
Отказ от ответственности: я действительно запутался между сервисами на основе REST и SOAP.
После прочтения многих учебных пособий (которые кажутся противоречащими друг другу) в веб-сервисе на основе REST, мне стало интересно, можем ли мы / должны использовать SOAP для отправки / получения сообщений в веб-сервисе на основе REST?
Я попробовал следующие ссылки
1) http://www.ibm.com/developerworks/webservices/library/ws-restful/
1 ответ
Под "сервисами на основе SOAP" я предполагаю, что вы имеете в виду веб-сервисы WS-I Basic Profile. Это различие важно, поскольку 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 Basic Profile зависит от вашей аудитории. Если вы разрабатываете интерфейс типа B2B в рамках предприятия, чаще всего можно увидеть веб-службы WSI-BP. Поскольку существует базовый стандарт, а также из-за зрелой поддержки корпоративных поставщиков (таких как IBM, Oracle, SAP, Microsoft) и из-за уровня поддержки инфраструктуры, особенно в.NET и Java, WSI-BP имеет большой смысл когда вам нужно быстро что-то сделать, и вы хотите, чтобы клиенты могли легко подключаться в корпоративной среде, а обмениваемые данные - это бизнес-данные, которые хорошо сериализуются как SOAP.
С другой стороны, если вы представляете веб-сервисы более широкой веб-аудитории, я бы сказал, что существует тенденция от WSI-BP к стилю RESTful. Поскольку REST только предполагает, что клиент поддерживает HTTP, его можно настроить для взаимодействия с максимально широкой аудиторией. REST также предоставляет вам масштабируемость самой сети с поддержкой кэширования ресурсов и т. Д., Что делает ее доступной для большой аудитории намного лучше, чем веб-сервисы WSI-BP.