BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

In WCF gibt es verschiedene Arten von HTTP-basierten Bindungen:

  • BasicHttpBinding
  • WsHttpBinding
  • WebHttpBinding

Was sind die Unterschiede zwischen diesen 3?

Was sind insbesondere die Unterschiede in Bezug auf functionen / performance und Kompatibilität?

   

Du vergleichst Äpfel mit Orangen hier:

  • webHttpBinding ist die REST-style-Bindung, bei der Sie im Grunde nur eine URL anklicken und eine Ladung XML oder JSON vom Web-Service zurückbekommen

  • basicHttpBinding und wsHttpBinding sind zwei SOAP-basierte Bindungen, die sich stark von REST unterscheiden. SOAP hat den Vorteil, WSDL und XSD zu haben, um den Dienst, seine Methoden und die Daten, die im Detail weitergegeben werden, zu beschreiben (REST hat so etwas noch nicht). Auf der anderen Seite können Sie nicht einfach mit Ihrem Browser zu einem wsHttpBinding-Endpunkt navigieren und XML betrachten – Sie müssen einen SOAP-Client verwenden, zB den WcfTestClient oder Ihre eigene App.

Ihre erste Entscheidung muss also lauten: REST vs. SOAP (oder Sie können beide Arten von Endpunkten über Ihren Dienst verfügbar machen – das ist auch möglich).

Zwischen basicHttpBinding und wsHttpBinding bestehen dann folgende Unterschiede:

  • basicHttpBinding ist die sehr grundlegende Bindung – SOAP 1.1, nicht viel in Sachen Sicherheit, nicht viel mehr in Bezug auf die functionen – aber kompatibel zu fast jedem SOAP-Client da draußen -> großartig für Interoperabilität, schwach auf functionen und Sicherheit

  • wsHttpBinding ist die vollständige Bindung, die eine Unmenge an WS- * Features und Standards unterstützt – es hat viele weitere Sicherheitsfunktionen, Sie können sessionvolle Verbindungen verwenden, Sie können zuverlässiges Messaging verwenden, Sie können Transaktionssteuerung verwenden – einfach eine Menge mehr , aber wsHttpBinding ist auch viel schwerer “und fügt Ihren Nachrichten, während sie durch das Netzwerk reisen, viel Overhead hinzu

Für einen eingehenden Vergleich (einschließlich einer Tabelle und Codebeispiele) zwischen den beiden lesen Sie diesen Codeprojekt Artikel: Unterschiede zwischen BasicHttpBinding und WsHttpBinding