Зачем использовать REST вместо сервисов на основе SOAP?[закрыто]

StackOverflow https://stackoverflow.com/questions/90451

  •  01-07-2019
  •  | 
  •  

Вопрос

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

Каковы некоторые причины, по которым кто-либо в «реальном мире» использует REST вместо служб на основе SOAP?

Это было полезно?

Решение

Меньше накладных расходов (нет конверта SOAP для упаковки каждого вызова)

Меньше дублирования (HTTP уже представляет такие операции, как DELETE, PUT, GET и т. д.).которые в противном случае должны быть представлены в конверте SOAP).

Более стандартизировано — операции HTTP хорошо понятны и работают согласованно.Некоторые реализации SOAP могут оказаться привередливыми.

Более удобочитаемый и тестируемый для человека (сложнее тестировать SOAP с помощью только браузера).

Не нужно использовать XML (ну, для SOAP это тоже не обязательно, но вряд ли это имеет смысл, поскольку вы уже выполняете анализ конверта).

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

Другие советы

RESTful услуги гораздо проще потреблять, чем МЫЛО базовые (регулярные) услуги.Причина этого в том, что REST основан на обычных HTTP-запросах, что позволяет определить намерение по типу выполняемого запроса (GET = извлечение, POST = запись, DELETE = удаление и т. д.) и полностью не сохраняет состояние.С другой стороны, вы можете возразить, что он менее гибок, поскольку устраняет концепцию конверта сообщения, содержащего контекст запроса.

По моему опыту, SOAP предпочтительнее для сервисов внутри предприятия, а REST — для сервисов, которые предоставляются как общедоступные API.

С помощью таких инструментов, как WCF, в среде .NET очень просто реализовать службу как REST или SOAP.

Некоторые соответствующие чтения:

Я предполагаю, что когда вы говорите «веб-сервисы», вы имеете в виду SOAP и набор стандартов WS-*.(В противном случае я мог бы утверждать, что службы REST являются «веб-сервисы».)

Канонический аргумент заключается в том, что службы REST больше соответствуют дизайну Интернета, то есть дизайну HTTP и связанной с ним инфраструктуры.Таким образом, использование службы REST будет более совместимо с существующими веб-инструментами и методами.

Конечно, если вы углубитесь в детали, вы обнаружите, что оба подхода имеют сильные стороны в разных сценариях.Вас интересуют именно эти подробности?

Накладные расходы не так важны, как хорошая архитектура.

REST — это не протокол, а архитектура, которая поощряет хороший масштабируемый дизайн.Его часто выбирают, потому что слишком большая свобода в RPC может легко привести к ухудшению дизайна.

Другая причина — предсказуемая стоимость протоколов RESTful через HTTP, поскольку они могут использовать существующие технологии (в основном прокси).Первоначальная стоимость RPC довольно низкая, но она имеет тенденцию значительно возрастать с увеличением нагрузки.

REST не зависит от реализации и гораздо более прозрачен, и это делает его идеальным для общедоступных API, особенно для крупных веб-сайтов, таких как Flickr, Amazon или Digg, которые используют свои API в качестве инструментов маркетинга и действительно хотят, чтобы люди использовали их данные.Они не Я хочу быть рядом с тысячами начинающих разработчиков, которые пытаются отладить ошибочную библиотеку SOAP своего языка сценариев.

По сравнению с SOAP и WSDL, которые лучше подходят для внутренних приложений, где у вас есть подключаемые библиотеки и известные знающие люди с обеих сторон.(И вам, возможно, не придется заботиться о таких вещах, как балансировка нагрузки в масштабе Интернета, HTTP-кеширование и т. д.) Тогда вы получаете самодокументированные API, сохраняющие типы и т. д.с нулевой работой.

Надо прочитать самое превосходное произведение Роя Филдинга. диссертация по теме.Он приводит превосходные аргументы и определенно был СПОСОБ опередил свое время, когда он это написал (2000).

Блог Стива Виноски и его Последние статьи определенно заслуживают внимания.Он бывший гуру CORBA, написавший, пожалуй, лучшую книгу на эту тему вместе с Мичи Хеннинг. «Продвинутое программирование CORBA® на C++».Однако с тех пор он увидел ошибку в своих подходах клиент/сервер и теперь доверяет REST.

REST позволяет выполнять неизменяющие операции (которые обычно используют команду GET). кэшированный.То есть кэшируется клиентом и/или кэшируется прокси-серверами.Это может быть огромной победой!

REST — это, по сути, просто способ реализации веб-сервисов.Это всего лишь способ правильно использовать HTTP для запроса веб-сервисов, к которым вы пытаетесь подключиться.

http://www.xfront.com/REST-Web-Services.html http://en.wikipedia.org/wiki/Representational_State_Transfer

Это очень просто и тонко.Вы можете сделать это с помощью браузера через http-глагол:ПОЛУЧАТЬ.Я не нашел, чтобы браузер мог легко вручную выполнить общий HTTP-запрос POST.

Вот одна точка данных:Amazon предлагает свои API в форматах REST и SOAP, и 85% случаев использования приходится на REST.

REST проще реализовать, проще понять и повысить производительность.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top