BasicHttpBinding против WsHttpBinding против WebHttpBinding

297

В WCF есть несколько разных типов привязок на основе HTTP:

Каковы различия между этими 3?

В частности, каковы различия с точки зрения функций / производительности и совместимости?

Mubashar
источник
44
[BasicHttpBinding = Soap 1.1], [WsHttpBinding = Soap 1.2], [WebHttpBinding = Rest]
Фрэнк Мьятт Чт
Сравнение двух привязок на основе SOAP здесь: basicHttpBinding против wsHttpBinding
DavidRR

Ответы:

518

Вы сравниваете яблоки с апельсинами здесь:

  • webHttpBinding - это привязка в стиле REST, когда вы просто нажимаете на URL и получаете загруженный файл XML или JSON из веб-службы.

  • basicHttpBinding и wsHttpBinding - это две привязки на основе SOAP, которые сильно отличаются от REST. Преимущество SOAP состоит в том, что WSDL и XSD описывают сервис, его методы и данные, передаваемые в мельчайших деталях (REST пока не имеет ничего подобного - пока). С другой стороны, вы не можете просто перейти к конечной точке wsHttpBinding с помощью своего браузера и посмотреть на XML - вы должны использовать клиент SOAP, например, WcfTestClient или ваше собственное приложение.

Итак, ваше первое решение должно быть: REST против SOAP (или вы можете выставить оба типа конечных точек из вашего сервиса - это тоже возможно).

Затем между basicHttpBinding и wsHttpBinding существуют следующие различия:

  • basicHttpBinding - это очень базовая привязка - SOAP 1.1, не очень с точки зрения безопасности, не так уж много с точки зрения возможностей, но совместимая практически с любым клиентом SOAP -> отличная для взаимодействия, слабая для функций и безопасности

  • wsHttpBinding - это полнофункциональная привязка, которая поддерживает множество функций и стандартов WS- * - она ​​имеет гораздо больше функций безопасности, вы можете использовать сеансовые соединения, вы можете использовать надежный обмен сообщениями, вы можете использовать транзакционный контроль - просто намного больше вещей , но wsHttpBinding также намного «тяжелее» и добавляет много накладных расходов к вашим сообщениям, когда они передаются по сети

Для подробного сравнения (включая таблицу и примеры кода) между этими двумя статьями ознакомьтесь с этой статьей проекта кода: Различия между BasicHttpBinding и WsHttpBinding

marc_s
источник
1
Я не принимаю никаких решений, дорогой, я просто хотел узнать разницу, которую вы должны знать, каков вкус апельсина и того же яблока, поэтому я задал этот вопрос. Мне нужно больше о WebHttpBinding с точки зрения сравнения функций и производительности
Мубашар
Проверьте Google или Bing и выполните поиск «REST vs. SOAP» - НАГРУЗКИ информации там!
marc_s
4
Одно исправление: wsHttpBinding не поддерживает потоковую передачу. Или я что-то упустил? msdn.microsoft.com/en-us/library/ms730879.aspx
Эндрю Шепард
1
@ Andrew Shepherd: спасибо за ссылку и исправление - вы абсолютно правы, wsHttpBinding не поддерживает потоковую передачу .....
marc_s
@ EduardoLeón Одним из арендаторов REST является использование возможностей, встроенных в HTTP. Аутентификация встроена в HTTP, поэтому вы можете использовать ЛЮБОЙ тип провайдера аутентификации, который вы хотели. Это может быть так же просто, как Basic или NTLM, или вы можете сделать что-то более продвинутое, использующее токены OAuth / STS и т. Д.
BrainSlugs83