BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

297

Dans WCF, il existe différents 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é?

Mubashar
la source
44
[BasicHttpBinding = Soap 1.1], [WsHttpBinding = Soap 1.2], [WebHttpBinding = Rest]
Frank Myat jeu
Une comparaison des deux liaisons basées sur SOAP ici: basicHttpBinding vs wsHttpBinding
DavidRR

Réponses:

518

Vous comparez des pommes à des oranges ici:

  • webHttpBinding est la liaison de style REST, où vous appuyez simplement sur une URL et récupérez un chargement de XML ou JSON du service Web

  • basicHttpBinding et wsHttpBinding sont deux liaisons basées sur SOAP, ce qui est assez différent de REST. SOAP a l'avantage d'avoir WSDL et XSD pour décrire le service, ses méthodes et les données qui sont transmises en détail (REST n'a rien de tel pour l'instant). D'un autre côté, vous ne pouvez pas simplement naviguer vers un point de terminaison wsHttpBinding avec votre navigateur et regarder XML - vous devez utiliser un client SOAP, par exemple le WcfTestClient ou votre propre application.

Votre première décision doit donc être: REST vs SOAP (ou vous pouvez exposer les deux types de points de terminaison de votre service - c'est possible aussi).

Ensuite, entre basicHttpBinding et wsHttpBinding, il existe des différences comme suit:

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

  • wsHttpBinding est la liaison complète, qui prend en charge une tonne de fonctionnalités et de normes WS- * - elle a 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 à travers le réseau

Pour une comparaison approfondie (y compris un tableau et des exemples de code) entre les deux, consultez cet article de projet de code: Différences entre BasicHttpBinding et WsHttpBinding

marc_s
la source
1
Je ne prends aucune décision ici chère, je voulais juste savoir la différence, vous devez savoir quel est le goût de l'orange et la même chose de la pomme, c'est pourquoi j'ai posé cette question. J'ai besoin de plus d'informations sur WebHttpBinding en termes de comparaisons de fonctionnalités et de performances
Mubashar
Consultez Google ou Bing et recherchez «REST vs SOAP» - CHARGES d'informations là-bas!
marc_s
4
Une correction: wsHttpBinding ne prend pas en charge le streaming. Ou est-ce que je manque quelque chose? msdn.microsoft.com/en-us/library/ms730879.aspx
Andrew Shepherd
1
@Andrew Shepherd: merci pour le lien et la correction - vous avez tout à fait raison, wsHttpBinding ne prend pas en charge le streaming .....
marc_s
@ EduardoLeón L'un des locataires de REST est de profiter des fonctionnalités intégrées à HTTP. L'authentification est intégrée à HTTP, vous pouvez donc potentiellement utiliser N'IMPORTE QUEL type de fournisseur d'authentification que vous souhaitez. Cela peut être aussi simple que Basic ou NTLM, ou vous pouvez faire quelque chose de plus avancé qui exploite les jetons OAuth / STS, etc.
BrainSlugs83