netTcpBinding 或 wsHttpBinding

Posted

技术标签:

【中文标题】netTcpBinding 或 wsHttpBinding【英文标题】:netTcpBinding or wsHttpBinding 【发布时间】:2010-12-15 02:35:48 【问题描述】:

我有一个作为 Windows 服务托管的 WCF 服务,客户端是一个使用 WCF 服务方法的 ASP.Net 应用程序。

在实施安全性的过程中,我很困惑netTcpBinding/wsHttpBinding 中哪一个适合我的情况。

场景中的所有应用程序(WCF 服务、Windows 服务、ASP.Net 网站)很可能位于我们办公室的不同服务器上,因此位于 Intranet 中。用户可以通过 Internet 访问 ASP.Net 网站。

虽然,我在这里总是可以使用 wsHttpBinding,但在我的情况下使用netTcpBinding 设置服务端点是否合适?

【问题讨论】:

【参考方案1】:

查看这里以比较所有不同的内置绑定:

Configuring System-Provided Bindings - MSDN

对于您的情况,只要是 Web 服务器联系 WCF 服务,并且您不需要为服务的任何外部消费者提供端点...netTcpBinding 应该可以胜任。

【讨论】:

感谢您的回复。我想我仍然需要指定终点,否则我将如何添加对客户网站的引用......如果我遗漏了什么,请纠正我。或者当您说...“您不需要为服务的任何外部消费者提供端点”时,您是否还有其他意思? 当您说网站时,我假设您的意思是在您的网络上的硬件上运行的 ASP.NET 网站。如果是这样,任何到 WCF 服务的连接都将在返回到客户端之前从 Web 服务器连接到您的服务。如果您希望第三方连接到您的服务,那么 wsHttpBinding 会更好,因为它不会将它们绑定到平台。【参考方案2】:

如果您愿意,您可以通过多个绑定公开您的服务,因此您实际上可以同时使用两者。

但是,如果您同时控制客户端和服务并且它们都使用 WCF,则 netTcpBinding 会快得多。除非你在这两者之间有防火墙,否则我会选择那个。

【讨论】:

【参考方案3】:

如果您愿意以互操作性换取性能,请使用 netTcpBinding 而不是 wsHttpBinding,如果您知道如果您对结果不满意可以轻松取消交易(这是更改配置值的问题)。

【讨论】:

【参考方案4】:

由于您的 WCF 服务将被您办公室 (INTRANET) 中的应用程序访问,我会选择 netTcpBinding

内网场景中,建议您使用netTcpBinding,除非您有特殊要求使用其他绑定,例如wsHttpBinding。默认情况下,netTcpBinding 使用二进制编码传输安全,提供更好的性能。

关注 URL 将有助于获取更多信息

http://msdn.microsoft.com/en-us/library/cc949026.aspx

http://msdn.microsoft.com/en-us/library/ms730879.aspx

【讨论】:

【参考方案5】:

由于您的 WCF 服务是 netTcpBinding 的 Windows 服务 +1。在 IIS 上托管 netTcpBinding 很困难。

【讨论】:

以上是关于netTcpBinding 或 wsHttpBinding的主要内容,如果未能解决你的问题,请参考以下文章

带有 netTcpBinding 的 WCF 路由服务

netTcpBinding 最快的安全配置是啥?

WCF - 如何为 NTLM 身份验证配置 netTcpBinding?

无法在 Fiddler 中显示 netTcpBinding 请求

NetTcpBinding(读取 WindowsStreamSecurityBindingElement)如何加密/签署消息?

不支持流传输 + netTcpBinding = 成帧模式?