Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用wcf服务改进文件复制过程_C#_Wcf_Tcp_Smb - Fatal编程技术网

C# 使用wcf服务改进文件复制过程

C# 使用wcf服务改进文件复制过程,c#,wcf,tcp,smb,C#,Wcf,Tcp,Smb,我正在尝试用C语言编写一个应用程序,它可以通过两种方式复制数据 使用System.IO命名空间的.Net CopyFile方法将文件从源计算机复制到目标计算机。这样,它就可以使用SMB协议进行复制 使用流读取器从客户端文件中读取数据块,并将其发送到目标计算机上托管的已连接WCF服务。WCF服务将在目标计算机磁盘上写入数据。我一次读取和发送1MB的数据 在我的场景中,与1 Gbps网络上的SMB(第一种方法)相比,使用WCF服务的第二种方法的工作速度较慢 有人建议使用TCP窗口缩放。请建议这在这里

我正在尝试用C语言编写一个应用程序,它可以通过两种方式复制数据

  • 使用System.IO命名空间的.Net CopyFile方法将文件从源计算机复制到目标计算机。这样,它就可以使用SMB协议进行复制

  • 使用流读取器从客户端文件中读取数据块,并将其发送到目标计算机上托管的已连接WCF服务。WCF服务将在目标计算机磁盘上写入数据。我一次读取和发送1MB的数据

  • 在我的场景中,与1 Gbps网络上的SMB(第一种方法)相比,使用WCF服务的第二种方法的工作速度较慢

    有人建议使用TCP窗口缩放。请建议这在这里是否有用,或者让我知道改进的方法


    在大多数情况下,使用netTcpbinding的WCF实现比SMB更快。但当客户端在承载WCF服务的目标计算机上安装了多个NIC时,它就会停止运行。但在这种情况下,正常复制(第一种方法)工作速度更快。

    我可以想象,您需要一个非常非常好的wcf实现来比windows api或smb复制方法更快…尽管有所有的序列化和反序列化开销,但我认为wcf不是实现这一点的好方法。@jdweng如果千兆以太网被限制为100Mbps,它有什么意义?wcf及其默认数据形状对于发送大文件/流,配置是一个糟糕的选择。原因是WCF作为SOAP实现将通过传输以SOAP消息(非常详细的XML数据结构)的形式发送数据。您可以通过使用
    BinaryFormatter
    来改进这一点,它消除了XML。您可能还想查看WCF流