web-dev-qa-db-fra.com

BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

Dans WCF, il existe plusieurs types de liaisons basées sur HTTP:

Quelles sont les différences entre ces 3?

En particulier quelles sont les différences en termes de fonctionnalités/performances et de compatibilité?

284
Mubashar

Vous comparez des pommes à des oranges ici:

  • webHttpBinding est la liaison de style REST, dans laquelle vous frappez simplement une URL et récupérez un chargement de XML ou JSON à partir du service Web.

  • basicHttpBinding et wsHttpBinding sont deux liaisons basées sur SOAP très différentes de DU REPOS. SOAP a l'avantage de disposer de WSDL et de XSD pour décrire le service, ses méthodes et les données transmises de manière très détaillée (REST n'a rien de tel, pour l'instant). D'autre part, vous ne pouvez pas simplement naviguer vers un point de terminaison wsHttpBinding avec votre navigateur et consulter XML - vous devez utiliser un client SOAP, par exemple. le WcfTestClient ou votre propre application.

Par conséquent, votre première décision doit être: REST vs. SOAP (ou vous pouvez exposer les deux types de terminaux de votre service, ce qui est également possible).

Ensuite, entre basicHttpBinding et wsHttpBinding, les différences sont les suivantes:

  • basicHttpBinding est la liaison très basique - SOAP 1.1, pas beaucoup en termes de sécurité, pas grand chose en termes de fonctionnalités - mais compatible avec à peu près n'importe quel client SOAP -> idéal pour l'interopérabilité, faible sécurité et fonctionnalités

  • wsHttpBinding est la liaison complète, qui prend en charge une multitude de normes et de fonctionnalités WS- * - elle comporte beaucoup plus de fonctionnalités de sécurité, vous pouvez utiliser des connexions de session, vous pouvez utiliser une messagerie fiable, vous pouvez utiliser le contrôle transactionnel - juste beaucoup plus de choses , mais wsHttpBinding est également beaucoup * plus lourd "et ajoute beaucoup de surcharge à vos messages lorsqu’ils voyagent sur le réseau

Pour une comparaison approfondie (comprenant une table et des exemples de code) entre les deux, consultez cet article Codeproject: Différences entre BasicHttpBinding et WsHttpBinding

504
marc_s