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