net.pipe与net.tcp与http绑定的区别

63

我是WCF的新手,想了解以下每种绑定的差异/优点/限制等:

net.pipe
net.tcp
http

能提供何时使用每种绑定的支持场景和其他示例将不胜感激。

3个回答

69

这里是来自 MSDN 的链接,列出了所有绑定的功能,但不太适用于提供具体的使用示例。

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

这是一个不错的流程图,可以帮助选择它们之间的区别。

Flowchart

来源: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 (如果链接失效,可以在 wayback machine 中这里找到)。


Michele Leroux Bustamante在她的书《学习WCF》中,对所有不同的绑定进行了很好的比较,并提供了示例。 - Arman Bimatov
1
@JoeDoyle,虽然您的回答试图回答问题,但您能否通过将引用链接中的任何相关摘录添加到您的回答中来改进您的回答?这对于未来的访问者非常有帮助,因为他们不需要单击链接,并且最重要的是可以帮助保护您的答案免受死链的影响。 - Kermit
我喜欢这个,我喜欢这个,我就是喜欢这个流程图!真的很棒! - Aditya Bokade
最后两个链接已经失效了。有没有可能用其他地方的适当和相关的文章来替换它们?感谢您的跟进。 - Tatranskymedved

52

net.pipe,快速和安全,因为你的 Web 服务不会从网络上被访问(通常情况下,你会使用 net.pipe 来轻松地与 Windows 服务交互)。

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

net.tcp,速度比较快,因为你的 SOAP 消息没有被包装在 HTTP 请求中,但是你不能使用 RIA 技术调用 Web 服务,而且一些防火墙会丢弃你的消息。


请注意,如果您需要通过IIS记录操作(例如用于统计),据我所知,您只能使用http,因为即使将net.tcp和net.pipe配置为主机,它们也不会记录任何内容。 - bkqc

14

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

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

nettcp 绑定的配置重点在于创建一个通道堆栈,在 Windows 环境中表现更佳,为您替换各种 COM+ 和 .NET 远程处理投资提供了一个很好的选择。

BasicHttpBinding 的设计适用于互操作性最重要的场景。因此,BasicHttpBinding 使用 HTTP 进行传输和文本进行消息编码。


4
WCF不需要XML消息。例如,消息可以使用纯文本或二进制编码。 - jbatista
MTOM不是WCF中的消息编码方式。它是SOAP消息的一种优化方式,可以防止二进制数据被Base64编码。而BasicHttpBinding使用的是SOAP(XML)协议。 - Oooogi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接