BasicHttpBinding vs WsHttpBinding vs WebHttpBinding

Posted

技术标签:

【中文标题】BasicHttpBinding vs WsHttpBinding vs WebHttpBinding【英文标题】: 【发布时间】:2011-02-08 16:43:31 【问题描述】:

在 WCF 中有几种不同类型的基于 HTTP 的绑定:

BasicHttpBinding WsHttpBinding WebHttpBinding

这3个有什么区别?

特别是在功能/性能和兼容性方面有什么区别?

【问题讨论】:

[BasicHttpBinding = Soap 1.1],[WsHttpBinding = Soap 1.2],[WebHttpBinding = Rest] 这里是两个基于 SOAP 的绑定的比较:basicHttpBinding vs wsHttpBinding 【参考方案1】:

您在这里将苹果与橙子进行比较:

webHttpBinding 是 REST 样式的绑定,您基本上只需点击一个 URL 并从 Web 服务获取一卡车的 XML 或 JSON

basicHttpBindingwsHttpBinding 是两个与 REST 完全不同的基于 SOAP 的绑定。 SOAP 的优势在于使用 WSDL 和 XSD 来详细描述服务、它的方法和传递的数据(REST 还没有类似的东西)。另一方面,您不能只使用浏览器浏览到 wsHttpBinding 端点并查看 XML - 您必须使用 SOAP 客户端,例如WcfTestClient 或您自己的应用程序。

因此,您的第一个决定必须是:REST 还是 SOAP(或者您可以从您的服务中公开这两种类型的端点 - 这也是可能的)。

那么,basicHttpBinding和wsHttpBinding的区别如下:

basicHttpBinding 是非常基本的绑定 - SOAP 1.1,在安全性方面不多,在功能方面也不多 - 但几乎兼容任何 SOAP 客户端 --> 非常适合互操作性,弱于功能和安全性

wsHttpBinding 是成熟的绑定,它支持大量的 WS-* 特性和标准——它有更多的安全特性,可以使用会话连接,可以使用可靠的消息传递,可以使用事务控制- 只是更多的东西,但 wsHttpBinding 也更“重”,并在消息通过网络传输时增加了很多开销

对于两者之间的深入比较(包括表格和代码示例),请查看此 codeproject 文章:Differences between BasicHttpBinding and WsHttpBinding

【讨论】:

我没有在这里做任何决定,亲爱的,我只是想知道你必须知道橙子的味道和苹果的味道有什么区别,这就是我问这个问题的原因。在功能比较和性能方面,我需要更多关于 WebHttpBinding 的信息 查看 Google 或 Bing 并搜索“REST 与 SOAP” - LOADS 的信息! 更正一点:wsHttpBinding 不支持流式传输。还是我错过了什么? msdn.microsoft.com/en-us/library/ms730879.aspx @Andrew Shepherd:感谢您的链接和更正-您完全正确,wsHttpBinding 不支持流式传输..... @EduardoLeón REST 的租户之一是利用 HTTP 内置的功能。身份验证内置在 HTTP 中,因此您可以使用任何您想要的身份验证提供程序。它可以像 Basic 或 NTLM 一样简单,或者您可以做一些更高级的事情,利用 OAuth/STS 令牌等。

以上是关于BasicHttpBinding vs WsHttpBinding vs WebHttpBinding的主要内容,如果未能解决你的问题,请参考以下文章

使用 BasicHttpBinding 进行身份验证的 WCF 服务

如何以编程方式创建 BasicHttpBinding?

WCF 服务的 basicHttpBinding 上的 HTTPS

WCF系列BasicHttpBinding 和 WsHttpBinding 的不同点

使用请求标头验证BasicHttpBinding

WCF 与 basicHttpBinding、加密、签名和 usernameToken over HTTP