BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

297

No WCF, existem vários tipos diferentes de ligações baseadas em HTTP:

Quais são as diferenças entre esses 3?

Em particular, quais são as diferenças em termos de recursos / desempenho e compatibilidade?

Mubashar
fonte
44
[BasicHttpBinding = sabão 1.1], [WSHttpBinding = Sabão 1,2], [WebHttpBinding = Resto]
Frank Myat qui
Uma comparação das duas ligações baseadas em SOAP aqui: basicHttpBinding vs wsHttpBinding
DavidRR

Respostas:

518

Você está comparando maçãs com laranjas aqui:

  • webHttpBinding é a ligação no estilo REST, na qual você basicamente acessa uma URL e recebe um caminhão cheio de XML ou JSON do serviço da web

  • basicHttpBinding e wsHttpBinding são duas ligações baseadas em SOAP que são bem diferentes do REST. O SOAP tem a vantagem de ter o WSDL e o XSD para descrever o serviço, seus métodos e os dados transmitidos em grande detalhe (o REST ainda não tem nada parecido). Por outro lado, você não pode simplesmente navegar para um ponto de extremidade wsHttpBinding com o navegador e olhar para XML - é necessário usar um cliente SOAP, por exemplo, o WcfTestClient ou seu próprio aplicativo.

Portanto, sua primeira decisão deve ser: REST x SOAP (ou você pode expor os dois tipos de terminais do seu serviço - isso também é possível).

Em seguida, entre basicHttpBinding e wsHttpBinding, existem diferenças da seguinte maneira:

  • basicHttpBinding é a ligação muito básica - SOAP 1.1, não muito em termos de segurança, nem muito mais em termos de recursos - mas compatível com praticamente qualquer cliente SOAP existente -> ótimo para interoperabilidade, fraco em recursos e segurança

  • wsHttpBinding é a ligação completa, que suporta vários recursos e padrões do WS- * - possui muito mais recursos de segurança, você pode usar conexões de sessão, usar mensagens confiáveis, usar controle de transações - apenas muito mais coisas , mas o wsHttpBinding também é muito mais pesado "e acrescenta muita sobrecarga às suas mensagens enquanto elas viajam pela rede

Para uma comparação detalhada (incluindo exemplos de tabela e código) entre os dois, consulte este artigo de projeto de código: Diferenças entre BasicHttpBinding e WsHttpBinding

marc_s
fonte
1
Eu não estou tomando nenhuma decisão aqui querida, eu só queria saber a diferença, você deve saber qual é o sabor da laranja e o mesmo da maçã, por isso fiz essa pergunta. Eu preciso mais sobre WebHttpBinding em termos de comparações de recursos e desempenho
Mubashar
Confira o Google ou Bing e procure por "REST vs. SOAP" - MUITAS informações por aí!
Marc
4
Uma correção: wsHttpBinding não suporta streaming. Ou eu estou esquecendo de alguma coisa? msdn.microsoft.com/en-us/library/ms730879.aspx
Andrew Shepherd
1
Pastor @ Andrew: obrigado pelo link ea correção - Você está absolutamente certo, wsHttpBinding não suporta streaming de .....
marc_s
@ EduardoLeón Um dos inquilinos do REST é tirar proveito dos recursos incorporados no HTTP. A autenticação é incorporada no HTTP, portanto você pode usar QUALQUER tipo de provedor de autenticação que desejar. Poderia ser tão simples como Básico ou NTLM, ou você poderia fazer algo mais avançado que aproveita OAuth / STS fichas, etc.
BrainSlugs83