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

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

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

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

3 ответа

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

  • 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

      It will depend on the usage and when the specific binding can be chosen
BasicHttpBinding -->Use this when you need very minimal security and reliability and the need is to extend the legacy classic ones and get them migrated to the new WCF world without much hassle.
WsHttpBinding-->Use this when you want message and transport level security along with reliability. Along with this it also has dual transactions and all option in case we need duplex level of work in project
WebHttpBinding-->Use this when the need is only on HTTP protocol and it will be using Verbs like Get, Put , Post , Delete and  just like Asp.Net WebAPI usage we need to use this type of binding.

Hope this helps.

Если вы получаете отсутствующую ссылку на пространство имен службы при копировании файлов на веб-сервер, попробуйте следующее. Мы обнаружили, что публикация проекта и копирование файла App_WebReference.dll в папку bin исправит это. Используя привязки, созданные при добавлении службы в ваш проект, найденные в web.config, можно затем скопировать на ваши серверы web.config .

Другие вопросы по тегам