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的主要内容,如果未能解决你的问题,请参考以下文章
WCF - 如何为 NTLM 身份验证配置 netTcpBinding?
无法在 Fiddler 中显示 netTcpBinding 请求
NetTcpBinding(读取 WindowsStreamSecurityBindingElement)如何加密/签署消息?