【发布时间】:2011-06-30 21:45:11
【问题描述】:
我需要创建 WCF 应用程序,它将处理图片。它允许您以流的形式获取图片,并将图片发送到服务器(作为流)。它将在流传输模式下工作。此刻,我对这个选择犹豫不决。 BasicHttpBinding 还是 NetTcpBinding?它们之间有什么区别?的优点和缺点。哪个更能解决这个问题?
【问题讨论】:
标签: .net wcf binding streaming wcf-binding
我需要创建 WCF 应用程序,它将处理图片。它允许您以流的形式获取图片,并将图片发送到服务器(作为流)。它将在流传输模式下工作。此刻,我对这个选择犹豫不决。 BasicHttpBinding 还是 NetTcpBinding?它们之间有什么区别?的优点和缺点。哪个更能解决这个问题?
【问题讨论】:
标签: .net wcf binding streaming wcf-binding
查看this blog post(或许多其他类似的)
选择正确装订的图表来自 Juval Lowy 的书Programming WCF Services
并提供最好的指导,真的:
现在,您对流式传输的额外要求显然限制了选择的数量 - net.msmq 显然是不可能的。
basicHttpBinding、netTcpBinding 和 netNamedPipesBinding 支持流式传输。最后一个也可能是不可能的,因为它只能在同一台机器上工作(客户端和服务器)。
所以选择真的归结为basicHttpBinding 与netTcpBinding。 basicHttp 通过 http 连接和端口 80 工作,因此它非常适合互联网和“向公众开放”的场景,而 netTcp 可能会快一点,但它需要特定的端口,这些端口需要在服务器和/或防火墙上打开 -所以它可能更适合企业局域网环境,但不适合一般互联网本身。
在非常具体的场景中可能会考虑其他绑定,例如如果您要迁移到云中,您可能想调查 Relay 绑定,如果您正在研究联合安全性,则可能需要调查联邦绑定 - 但这些在流式传输方面并不真正适用。
【讨论】:
如果您没有非常大的流,则流式响应模式不是最佳模式。假设您的图片只有几 KB 甚至高达 100 KB,那么使用缓冲传输模式可能会更好。 您可以有一个流合同和缓冲传输模式,其中整个数据实际上是缓冲的,但数据合同使您能够像流一样访问它。
【讨论】: