Чем веб-сервисы Restful лучше веб-сервисов на основе SOAP - PullRequest
9 голосов
/ 09 ноября 2010

Я просмотрел различные сайты, и единственный ответ, который они дают, - Restful webservices использует собственные методы Http, такие как (GET, POST, PUT, DELETE). В то время как веб-сервисы на основе SOAP используют свои собственные пользовательские методы.- Успокаивающие веб-службы рассматривают каждый метод службы как ресурс и присваивают ему URI.

Однако я не понимаю всей важности этих ответов .. Почему эти вещи оказываются столь значительным преимуществом?через веб-сервисы на основе SOAP.

Пример будет оценен

Ответы [ 4 ]

10 голосов
/ 09 ноября 2010

REST естественно подходит для Web / Cloud API, в то время как SOAP подходит для сценариев распределенных вычислений.

Пропускная способность является основным преимуществом REST, так как нет сложного документа для прохождения (например, XML, заголовки SOAP), что крайне важно для эффективной работы Web API. JSON является широко признанным и простым стандартом для обмена данными и легко читается браузерами и клиентским кодом, поэтому большинство API RESTful (Yahoo является хорошим примером) предлагают JSON.

Не говоря уже о том, что REST доступен для объекта XmlHttpRequest, что, опять же, крайне важно для возможности AJAX для веб-API.

И, конечно же, функция REST не может быть проигнорирована. Поскольку REST основан на HTTP, он может использовать многие из семантики HTTP (и самой сети), используя заголовки в пакетах HTTP (срок действия которых истекает) для включения кэширования браузером. Не говоря уже о таких вещах, как сжатие gzip для повышения эффективности. С точки зрения производительности, REST действительно превосходит SOAP.

Что касается SOAP, то SOAP обслуживает операции с состоянием. Стандарт WS * (Безопасность, Транзакции и т. Д.) Обрабатывает этот вид сантехники, что довольно часто встречается в распределенных сценариях. Конечно, это можно сделать с помощью REST, но тогда это не будет REST. SOAP действительно хорош для определения операционных контрактов между клиентом и сервером, что крайне важно в распределенных сценариях.

Так что, на мой взгляд (и в целом SOAP против REST высоко ценится), используйте SOAP для сценариев распределенных вычислений, используйте REST для Web API.

4 голосов
/ 09 ноября 2010

Основная проблема с SOAP - это раздувание. Чем больше вы можете сделать, тем меньше вы можете использовать значения по умолчанию. Это приводит к огромным загрузкам WSDL даже для простых методов. Далее, он раздувает парсеры (определенные парсеры всегда меньше, чем универсальные), сообщения (целый пакет XML вместо DELETE с URI), обработчики ошибок (вы отправляете 20-30 КБ XML на сервер и он отвечает сообщением об ошибке размером 50 КБ; удачи вам в чтении и понимании).

Конкретный пример: код Java для чтения списка документов с помощью SOAP с сервера SharePoint настолько огромен, что для его компиляции необходимо предоставить компилятору Java 1 ГБ ОЗУ.

То же самое с Restful требует всего несколько строк кода. На клиенте вам нужно построить запрос с GET list/some/url. Разбор этого на сервере потребует меньше усилий, чем компиляция WSDL, даже если вам придется писать код вручную.

2 голосов
/ 09 ноября 2010

Многие не одобряют веб-сервисы на основе SOAP из-за дополнительной сложности, добавляемой уровнем SOAP, считая это чрезмерными издержками, предлагая веб-сервисы RESTful.
В средах REST сообщение xml инкапсулируется непосредственно в полезную нагрузку HTTP, а не в конверт SOAP (такой же, как AJAX).
Это значительно снижает накладные расходы при разборе.
Но в реальных случаях часто требуется отправлять на сервер / клиент дополнительную информацию, не связанную с фактической полезной нагрузкой xml-сообщения.
Это приводит к поиску способов передачи информации через HTTP-сообщение.
Поскольку существует необходимость в передаче такой информации, некоторые опровергают мнение о том, что службы на основе SOAP способствуют удовлетворению этих потребностей.

1 голос
/ 09 ноября 2010

Преимущества тактические - безусловно, можно делать все, что вы можете делать друг с другом, но веб-серверы были здесь до SOAP и довольно просты в настройке, поэтому зачастую проще.Например, аутентификация и тому подобное часто могут обрабатываться веб-сервером, так же как и перенаправление и балансировка нагрузки и тому подобное.Нормальные платформы SOAP на самом деле не имеют такого полного набора таких вещей и могут вызывать проблемы с ростом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...