BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

297

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

¿Cuáles son las diferencias entre estos 3?

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

Mubashar
fuente
44
[BasicHttpBinding = Soap 1.1], [WsHttpBinding = Soap 1.2], [WebHttpBinding = Rest]
Frank Myat
Una comparación de los dos enlaces basados ​​en SOAP aquí: basicHttpBinding vs wsHttpBinding
DavidRR

Respuestas:

518

Estás comparando manzanas con naranjas aquí:

  • webHttpBinding es el enlace de estilo REST, donde básicamente solo presionas una URL y obtienes una gran cantidad de XML o JSON del servicio web

  • basicHttpBinding y wsHttpBinding son dos enlaces basados ​​en SOAP que son bastante diferentes 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 de eso). Por otro lado, no puede simplemente navegar a un punto final wsHttpBinding con su navegador y mirar XML; tiene que usar un cliente SOAP, por ejemplo, WcfTestClient o su propia aplicación.

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

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

  • basicHttpBinding es el enlace muy 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 que existe -> ideal para la interoperabilidad, débil en características y seguridad

  • wsHttpBinding es el enlace completo, que admite un montón de características y estándares WS- *: tiene muchas más características de seguridad, puede usar conexiones de sesión, puede usar mensajes confiables, puede usar control transaccional, solo muchas más cosas , pero wsHttpBinding también es mucho más pesado "y agrega una gran cantidad de sobrecarga a sus mensajes a medida que viajan a través de la red

Para una comparación en profundidad (incluyendo una tabla y ejemplos de código) entre los dos, consulte este artículo de proyecto de código: Diferencias entre BasicHttpBinding y WsHttpBinding

marc_s
fuente
1
No estoy tomando ninguna decisión aquí querida, solo quería saber la diferencia, debes saber cuál es el sabor de la naranja y lo mismo de la manzana, por eso hice esta pregunta. Necesito más sobre WebHttpBinding en términos de comparación de características y rendimiento
Mubashar
Echa un vistazo a Google o Bing y busca "REST vs. SOAP" - ¡ MUCHA información por ahí!
marc_s
44
Una corrección: wsHttpBinding no admite la transmisión. ¿O me estoy perdiendo algo? msdn.microsoft.com/en-us/library/ms730879.aspx
Andrew Shepherd
1
@Andrew Shepherd: gracias por el enlace y la corrección: tienes toda la razón, wsHttpBinding no admite la transmisión .....
marc_s
@ EduardoLeón Uno de los inquilinos de REST es aprovechar las características integradas en HTTP. La autenticación está integrada en HTTP, por lo que podría utilizar CUALQUIER tipo de proveedor de autenticación que desee. Podría ser tan simple como Basic o NTLM, o podría hacer algo más avanzado que aproveche los tokens OAuth / STS, etc.
BrainSlugs83