BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

En WCF hay varios tipos diferentes de enlaces basados ​​en HTTP:

  • BasicHttpBinding
  • WsHttpBinding
  • WebHttpBinding

¿Cuáles son las diferencias entre estos 3?

En particular, ¿cuáles son las diferencias en términos de características / rendimiento y compatibilidad?

Estás comparando manzanas con naranjas aquí:

  • webHttpBinding es el enlace REST-style, donde básicamente solo tocas una URL y recuperas una carga de XML o JSON del servicio web

  • basicHttpBinding y wsHttpBinding son dos enlaces basados ​​en SOAP que es bastante diferente de REST. SOAP tiene la ventaja de tener WSDL y XSD para describir el servicio, sus métodos y los datos que se transmiten con gran detalle (REST aún no tiene nada parecido). Por otro lado, no puedes simplemente navegar a un punto final wsHttpBinding con tu navegador y mirar XML; tienes que usar un cliente SOAP, por ejemplo, el WcfTestClient o tu propia aplicación.

Por lo tanto, su primera decisión debe ser: REST contra SOAP (o puede exponer ambos tipos de puntos finales a su servicio, eso también es posible).

Luego, entre basicHttpBinding y wsHttpBinding, las diferencias son las siguientes:

  • basicHttpBinding es el enlace más básico – SOAP 1.1, no mucho en términos de seguridad, no mucho más en términos de características, pero compatible con casi cualquier cliente SOAP por ahí -> ideal para la interoperabilidad, funciones débiles y seguridad

  • wsHttpBinding es la encuadernación completa, que admite un montón de características y estándares WS- *; tiene muchas más funciones de seguridad, puede usar conexiones de sesión, puede usar mensajería confiable, puede usar control transaccional, solo muchas más cosas , pero wsHttpBinding también es mucho * más pesado y agrega mucha sobrecarga a tus mensajes a medida que viajan por la red

Para una comparación en profundidad (que incluye una tabla y ejemplos de código) entre los dos echa un vistazo a este artículo del proyecto de código: Diferencias entre BasicHttpBinding y WsHttpBinding