In WCF esistono diversi tipi di associazioni basate su HTTP:
Quali sono le differenze tra questi 3?
In particolare, quali sono le differenze in termini di funzionalità / prestazioni e compatibilità?
In WCF esistono diversi tipi di associazioni basate su HTTP:
Quali sono le differenze tra questi 3?
In particolare, quali sono le differenze in termini di funzionalità / prestazioni e compatibilità?
Risposte:
Stai confrontando le mele con le arance qui:
webHttpBinding è l'associazione in stile REST, in cui basterà semplicemente colpire un URL e recuperare un camion di XML o JSON dal servizio web
basicHttpBinding e wsHttpBinding sono due binding basati su SOAP che sono abbastanza diversi da REST. SOAP ha il vantaggio di avere WSDL e XSD per descrivere il servizio, i suoi metodi e i dati trasmessi in modo molto dettagliato (REST non ha ancora nulla del genere). D'altra parte, non puoi semplicemente cercare 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 è possibile).
Quindi, tra basicHttpBinding e wsHttpBinding, le differenze sono le seguenti:
basicHttpBinding è l'associazione molto semplice - SOAP 1.1, non molto in termini di sicurezza, non molto altro in termini di funzionalità - ma compatibile con quasi tutti i client SOAP in circolazione -> ottimo per l'interoperabilità, debole per 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 messaggistica affidabile, puoi usare il controllo transazionale - solo molte altre cose , ma wsHttpBinding è anche * molto più pesante "e aggiunge un sacco di sovraccarico ai tuoi messaggi mentre viaggiano attraverso la rete
Per un confronto approfondito (tra cui una tabella e esempi di codice) tra i due, dai un'occhiata a questo articolo codeproject: Differenze tra BasicHttpBinding e WsHttpBinding