我有一个C#桌面应用程序。
它目前使用basicHttpBinding使用WCF调用我的IIS服务器将JPEGS发送到我的服务器。
我也用:
messageEncoding="Mtom"
我使用的是attibute:
[OperationContract(IsOneWay = true)]
在我的WCF界面中我的方法。
我为每张图片上传的最大字节数不会超过18KB。
上传次数与我可以调整的次数一样多。它们是按顺序上传的,不会使路由器过载。
我阅读了使用不同传输的描述,即 Basic,TCP,NamePipes。
是我在Windows服务中(即在IIS之外)托管TCP Net绑定的最佳方式,还是上传速度没有差异?
我很困惑......
答案 0 :(得分:1)
需要考虑的一些想法:
Net.Tcp绑定通常被认为是不同端点之间通信的最佳性能绑定类型。缺点是net.tcp不能与非WCF客户端互操作,并且在负载平衡方面不能很好地工作。如果您的用例避免了这两个条件,那么您可能会看到Net.Tcp绑定的性能优势。
作为替代方案,您还可以考虑通过HTTP进行二进制编码,这样可以获得高性能串行器的优势,而不受Net.Tcp(互操作性和负载平衡复杂性)的使用限制。
根据您的方案,您可能需要考虑MSMQ绑定,它提供了向服务提交消息的可靠方法,但它不会将回复消息发送回客户端。这样做的好处是客户端不必等待处理消息以继续执行。
https://msdn.microsoft.com/en-us/library/vstudio/hh323713%28v=vs.100%29.aspx
此帖中提供的其他表现信息:
WCF How much faster is TCP than HTTP
答案 1 :(得分:0)
如果您仅在桌面应用程序中使用,则应使用TCP绑定。
答案 2 :(得分:0)
最常见的方法是使用流媒体。
要使用“WCF服务+ HTTP”传输大型文件/任何文件,我们可以使用以下类型的绑定:
在 wsHttpBinding 中,我们可以将 transfermode 属性设置为缓冲,但是对于大文件使用此方法存在缺点,因为它需要在上传/下载之前将整个文件放入内存中,Web客户端和WCF服务主机上都需要一个大缓冲区。但是,这种方法对于安全地传输小文件非常有用。
在 basicHTTPBinding 中,我们可以将 transfermode 用作流式传输,以便可以以块的形式传输文件。
NetTcpBinding在安全性和性能方面更有用,但对于您的情况,我建议使用basicHTTPBinding。