Вопросы о разнице и терминологии NVP и SOAP - PullRequest
4 голосов
/ 08 июля 2010

Я много работаю со сторонними веб-сервисами.Первое, что я ищу, это если они предоставляют WSDL, который я могу легко добавить в Visual Studio и сразу начать использовать автоматически сгенерированный прокси-класс, который VS создает на основе WSDL, и, очевидно, я могу быстро приступить к программированию и начать использовать любой другойParty API.

Так, например, PayPal предлагает 2 варианта своего API.Один через пару значений имени, а другой - SOAP, который предоставляет WSDL, который я могу использовать в своих проектах .NET, и я ухожу.

Итак, могу ли я предположить следующее в отношении терминологии здесь?

  1. NVP не предоставляет WSDL (это делается парами значений имен строки запроса, передаваемыми в HTTPRequest)
  2. Веб-службы SOAP могут или не могут предоставлять WSDL в любое время, чтобы вы могли включить их в свои проектыпорядок потребления
  3. REST - это всего лишь изобретение именования, которое может быть применено к API-интерфейсам типа NVP или SOAP / WSDL
  4. Называется ли оно API или SDK?Я всегда ссылаюсь на сервис, к которому я обращаюсь, и делаю вызовы API для «API», но по какой-то причине мой босс называет это SDK, который не имеет смысла для меня ... API - это то, что я вижу больше всего

Я не совсем уверен, что мои утверждения на 100% верны, и мне нужно это прояснить.

Ответы [ 2 ]

8 голосов
/ 15 июля 2010
  1. NVP не предоставляет WSDL (это делается парами значений имени строки запроса, переданными в HTTPRequest)

То, что PayPal называет «имя-значение-пары», не является стандартом. Однако они не единственные, кто его использует (кажется). Это в основном отправка параметров в виде пар имен и значений (очевидно), с которыми очень легко иметь дело программно, потому что HTML-формы делают то же самое, поэтому, отправляя NVP, вы моделируете веб-форму и программирование на стороне сервера одинаково.

Короче говоря, проще назвать его NVP, чем сказать: пожалуйста, используйте application/x-www-form-urlencoded.

  1. Веб-службы SOAP могут предоставлять или не предоставлять WSDL в любое время, чтобы вы могли использовать их в своих проектах для использования

В теории да. SOAP как протокол не требует использования WSDL для определения / описания. Он описывает только сообщения между клиентами и серверами (и / или посредниками). Реально, однако, концепция веб-сервисов SOAP обычно означает веб-сервисы, которые описаны с использованием WSDL и которые используют SOAP для обмена сообщениями. Почти все доступное программное обеспечение (.Net, Java и другие, такие как gSOAP C / C ++) определяют веб-сервисы через WSDL. Доступны инструменты для преобразования предопределенных классов в WSDL, и наоборот, SOAP обычно обрабатывается библиотекой.

Короче говоря, способ, которым вы используете веб-сервисы путем генерации классов из WSDL, является стандартным. Хотя SOAP определяет сообщения, которыми обмениваются, если в WSDL нет определения службы - это не веб-служба, так как нет контракта на обслуживание.

  1. REST - это всего лишь изобретение именования, которое можно применять к API-интерфейсам типа NVP или SOAP / WSDL

REST - это, конечно, не соглашение об именах, это архитектурный стиль, построенный в основном на концепции ресурсов и гиперссылок на них. Есть хорошие объяснения, но вы можете в значительной степени идентифицировать их по стилю: вы используете небольшой набор глаголов (обычно HTTP: GET, POST, PUT, DELETE или их часть) для выполнения действий, которые вы хотите над ресурсами. Простой способ определить это:

  1. Адреса обозначают ресурсы, поэтому вместо выполнения таких действий, как Продажа, Авторизация и Заказ, отправляемых в рамках запроса, вы будете иметь дело с различными адресами, похожими на http://www.example.org/Sales/sale-015 и http://www.example.org/orders/1337, которые Вы можете получить доступ с помощью GET или удалить с помощью DELETE или изменить, используя PUT или POST, в зависимости от ситуации.

  2. Ответы на запросы REST обычно содержат соответствующие ссылки, которые вы можете использовать для возможных последующих действий. Таким образом, ответное сообщение о продаже может содержать ссылки, позволяющие подтвердить продажу.

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

  1. Это называется API или SDK? Я всегда ссылаюсь на сервис, к которому я обращаюсь, и делаю вызовы API для «API», но по какой-то причине мой босс называет это SDK, который не имеет смысла для меня ... API - это то, что я вижу больше всего

API (интерфейс прикладного программирования) - это определенный список функций, которые доступны извне и, следовательно, определяют интерфейс. SDK (комплект разработки программного обеспечения) - это группа программных инструментов и библиотек, которые вы бы использовали для разработки программного обеспечения. Так что, если вы загружаете исполняемый код, который является SDK; если это документация, которая является API.

Paypal предоставляет API. В связи с этим для разработки программного обеспечения для iPhone (просто в качестве примера) вам придется загрузить iPhone SDK от Apple.

1 голос
/ 12 июля 2010

Все веб-службы SOAP должны предоставлять WSDL. Им не нужно предоставлять его онлайн через URL. Возможно, поставщик веб-службы отправит вам WSDL по электронной почте или по другому каналу. Важно то, что для описания службы должен существовать WSDL.

«NVP» - это то, что PayPal и, возможно, некоторые другие используют. Это не какой-то стандарт.

REST - это отдельный архитектурный стиль. См. МЫЛО или ОТДЫХ .

...