我正在寻求改进 WCF 客户端/服务器,以便它处理大量小文件,比现在更快。
我编写了一个 WCF 客户端和一个服务器来跨网络移动文件。
我通过从客户端调用服务器(发送我想下载的文件的名称作为参数),然后让服务器返回一个 Stream
简化示例:
//CLIENT CODE>>
Stream stream = syncService.GetStream(fileName);
//<<CLIENT CODE
//SERVER CODE>>
public Stream GetStream(string fileName)
{
string filePathOnServer = ServerService.Service1.SERVER_FILES_PATH + fileName;
return File.OpenRead(filePathOnServer);
}
//<<SERVER CODE
如果我需要获取多个文件,然后我会递归调用 GetStream,并将流保存到客户端计算机上的文件中。它在移动少量大文件时可以接受我遇到的问题是,无论大小如何,下载单个文件的开销约为 1/10 秒;因此,如果我想下载大量 1Kb 的文件,我基本上被限制为最大 10Kbs。
我希望有人对替代实施提出建议。我尝试从服务器返回一个流列表,但我认为 WCF 不允许这样做。
我需要能够在不压缩文件的情况下做到这一点。
我正在考虑尝试返回一个由多个连接的流组成的流,但我不确定是否有更好的方法。