BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

In WCF esistono diversi tipi di collegamenti basati su HTTP:

  • BasicHttpBinding
  • wSHttpBinding
  • webHttpBinding

Quali sono le differenze tra questi 3?

In particolare quali sono le differenze in termini di caratteristiche / prestazioni e compatibilità?

Stai confrontando le mele con le arance qui:

  • webHttpBinding è il binding in stile REST, in cui in pratica si colpisce semplicemente un URL e si recupera un carico di lavoro di XML o JSON dal servizio Web

  • basicHttpBinding e wsHttpBinding sono due associazioni basate su SOAP che sono abbastanza diverse da REST. SOAP ha il vantaggio di avere WSDL e XSD per descrivere il servizio, i suoi metodi e i dati passati in modo molto dettagliato (REST non ha ancora niente del genere). D’altra parte, non puoi semplicemente navigare verso un endpoint wsHttpBinding con il tuo browser e guardare XML – devi usare un client SOAP, ad esempio WcfTestClient o la tua app.

Quindi la tua prima decisione deve essere: REST vs. SOAP (oppure puoi esporre entrambi i tipi di endpoint dal tuo servizio – anche questo è ansible).

Quindi, tra basicHttpBinding e wsHttpBinding, le differenze sono le seguenti:

  • basicHttpBinding è l’associazione di base molto semplice – SOAP 1.1, non molto in termini di sicurezza, non molto altro in termini di funzionalità – ma compatibile praticamente con qualsiasi client SOAP là fuori -> ottimo per l’interoperabilità, debole su funzionalità e sicurezza

  • wsHttpBinding è l’associazione completa, che supporta un sacco di funzionalità e standard WS- * – ha molte più funzioni di sicurezza, puoi usare connessioni di sessione, puoi usare messaggi affidabili, puoi usare il controllo delle transazioni – solo molto più roba , ma wsHttpBinding è anche molto * più pesante “e aggiunge un sacco di spese generali ai tuoi messaggi mentre viaggiano attraverso la rete

Per un confronto approfondito (tra cui una tabella e esempi di codice) tra i due controlla questo articolo codeproject: Differenze tra BasicHttpBinding e WsHttpBinding