【问题标题】:net.pipe vs. net.tcp vs. http Bindingsnet.pipe vs. net.tcp vs. http 绑定
【发布时间】:2010-10-20 10:10:37
【问题描述】:

我是 WCF 的新手,想了解以下每个绑定的区别/优势/限制/等:

net.pipe
net.tcp
http

我们将不胜感激有关何时使用每个绑定和其他示例的支持方案。

【问题讨论】:

    标签: .net wcf wcf-binding


    【解决方案1】:

    虽然不能很好地提供具体的使用示例,但这里有一个来自 MSDN 的链接,其中列出了绑定的所有功能。

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

    这是一个不错的流程图,也可以帮助您在它们之间进行选择。

    来源:http://bloggingabout.net/blogs/dennis/archive/2006/12/01/WCF-Binding-decision-chart.aspx

    这是我过去使用过的一篇很好的整体文章。

    http://mkdot.net/blogs/dejan/archive/2008/03/31/wcf-binding-decision.aspx(如果链接不再适合您,则在回程机器中使用here)。

    【讨论】:

    • Michele Leroux Bustamante 用她的书中的示例很好地比较了所有不同的绑定:Learning WCF
    • @JoeDoyle 虽然这个答案试图回答这个问题,但您能否通过将引用链接中的任何相关摘录添加到您的答案来改进您的答案?这将对未来的访问者有所帮助,因为他们不需要点击链接,最重要的是有助于保护您的答案免受死链接的影响。
    • 我喜欢这个,我喜欢这个,我就是喜欢这个流程图!真棒!
    • 最后 2 个链接不再起作用。是否有机会用其他地方的一些合适且相关的文章替换它们?感谢跟进
    【解决方案2】:

    net.pipe,快速且安全,因为您的 Web 服务无法从网络访问(通常,您将使用 net.pipe 轻松与 Windows 服务交互)。

    http,出于互操作性的原因,您将使用它,如果您的 Web 服务不是通过 HTTP,silverlight 或 flash 无法使用它(因为浏览器会过滤非 http 数据包,就像防火墙一样)。

    net.tcp 更快一些,因为您的 soap 消息没有包装在 HTTP 请求中,但是您不能使用 RIA 技术调用您的 web 服务,并且某些防火墙会丢弃您的消息。

    【讨论】:

    • 请注意,如果您需要 IIS 记录操作(例如用于统计信息),AFAIK,您别无选择,只能使用 http,因为 net.tcp 和 net.pipe 都不会记录任何内容即使将 IIS 配置为主机。
    【解决方案3】:

    Windows Communication Foundation (WCF) 是用于构建处理 XML 消息的服务的框架。 WCF 允许您使用不同的传输协议(例如 HTTP、TCP 和 MSMQ)和使用不同的 XML 表示(例如文本、二进制或 MTOM,在 WCF 中通常称为消息编码)来传输消息。

    如果您想在一台机器上托管多个 WCF 服务并希望它们使用共享内存进行通信,请使用命名管道 =>net.pipe,然后使用 tcp 与不同机器上的 WCF 服务进行通信。

    nettcp 绑定的配置侧重于创建在 Windows 环境中性能更好的通道堆栈,为您提供替代各种 COM+ 和 .NET 远程处理投资的绝佳选择。

    BasicHttpBinding 专为互操作性至关重要的场景而设计。因此,BasicHttpBinding 使用 HTTP 进行传输,使用文本进行消息编码。

    【讨论】:

    • WCF 不需要 XML 消息。例如,消息可以用纯文本或二进制编码
    • MTOM 不是 WCF 中编码的消息。这是对 SOAP 消息的优化,可防止二进制数据被 Base64 处理。它是使用 SOAP (XML) 的 BasicHttpBinding。
    猜你喜欢
    • 1970-01-01
    • 2013-09-21
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    相关资源
    最近更新 更多