Restful против других веб-сервисов - PullRequest
17 голосов
/ 18 февраля 2010

Что отличает веб-сервисы Restful от других веб-сервисов, таких как SOAP?

Ответы [ 5 ]

31 голосов
/ 18 февраля 2010

Дебаты по поводу веб-сервисов ни в коем случае не завершены, но есть некоторые элементы, которые выделяются.

Веб-сервисы RESTful - это «семейство» веб-сервисов. Некоторые называют это архитектурой.

Веб-службы RESTful используют протокол HTTP для выполнения запросов от веб-службы. Они используют HTTP-глаголы: GET, POST, PUT и DELETE (и другие, иногда). Сами запросы относятся к URL-адресам, которые представляют ресурсы ... иногда запросы будут содержать данные в теле, которые могут быть HTML, JSON, двоичными данными или другими.

Для чисто веб-службы RESTful требуется только URL-адрес и HTTP-глагол для описания запрошенного действия ... данные тела обычно являются полезной нагрузкой для участия в запрошенном действии ... они не должны диктовать запрошенное действие

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

Это два совершенно разных способа реализации веб-сервисов. Если вы зададите вопрос «Что лучше», вы, вероятно, получите сильные мнения с обеих сторон. Я предлагаю вам продолжить расследование и принять решение.

12 голосов
/ 18 февраля 2010
Веб-служба

A RESTful (также называемая веб-API RESTful) - это простая веб-служба, реализованная с использованием HTTP и принципов REST. Такой веб-сервис можно рассматривать как набор ресурсов. Определение такого веб-сервиса можно рассматривать как включающее три аспекта:

  • Базовый URI для веб-службы, например http://example.com/resources/
  • Тип MIME данных, поддерживаемых веб-сервисом. Это часто JSON, XML или YAML, но это может быть любой другой допустимый тип MIME.
  • Набор операций, поддерживаемых веб-службой с использованием методов HTTP (например, POST, GET, PUT или DELETE).

SOAP , первоначально определяемый как простой протокол доступа к объектам, представляет собой спецификацию протокола для обмена структурированной информацией при реализации веб-служб в компьютерных сетях. Он использует расширяемый язык разметки (XML) в качестве формата сообщения и обычно использует другие протоколы прикладного уровня (в частности, удаленный вызов процедур (RPC) и HTTP) для согласования и передачи сообщений. Этот протокол на основе XML состоит из трех частей:

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

ссылки:

Кстати, простой поиск в Google может дать вам ответы ...

4 голосов
/ 18 февраля 2010

Хорошо, в переполнении стека есть множество знаний по этой теме.

Я думаю, что лучшая статья, в которой выражается дух REST и его сравнение с такими технологиями, как SOAP, - Как я объяснил REST своей жене .

В отличие от SOAP, REST не является стандартом, это скорее подход, ориентированный на ресурсы и вещи, которые вы можете сделать с ресурсами. Глаголы HTTP GET, POST, PUT и DELETE являются типичными действиями, которые вы можете применить к любому ресурсу. SOAP - это стандарт, который игнорирует эти глаголы и изобрел более всеобъемлющий протокол, который работает поверх самого популярного глагола HTTP POST для максимальной совместимости. Большую часть времени эта дополнительная сложность не является необходимой, и простого HTTP GET-запроса для ресурса обычно достаточно для того, чтобы потенциально получить 1 КБ + SOAP + XML для достижения эквивалентного результата.

Вы также можете проверить блог Роя Филдинга (изобретатель REST) ​​для получения дополнительной информации о том, что это значит.

2 голосов
/ 18 февраля 2010

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

Сервисы SOAP предлагают больше готовых функций, наиболее важной из которых (конечно, imho) является обнаружение. Возможность добавить ссылку на SOAP-сервис практически в любой среде разработки и автоматически генерировать прокси-класс, который будет скрывать основные сложности HTTP, вплоть до сериализации нетривиальных типов, очень и очень полезна.

Мне кажется, что оба эти подхода к разработке веб-сервисов имеют свое место. Для требований AJAX, которые не требуют ничего сложного, я склонен реализовывать их как обработчик HTTP (ASP.NET). Все, что нужно вызывать из другого приложения или из нескольких мест в одном приложении, я реализую как службу SOAP из-за предоставляемой им инкапсуляции протокола, а также из-за возможности вызывать использование базового объекта без накладных расходов HTTP. где это имеет смысл.

1 голос
/ 05 сентября 2014

1) REST более прост и удобен, чем SOAP 2) REST использует протокол HTTP для создания или использования веб-сервисов, в то время как SOAP использует XML. 3) REST является более легким по сравнению с SOAP и предпочтительным выбором для мобильных устройств и КПК. 4) REST поддерживает различные форматы, такие как текст, JSON и XML, в то время как SOAP поддерживает только XML. 5) Для повышения производительности можно кэшировать вызов веб-служб REST.

...