首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >下载大量小文件

下载大量小文件
EN

Stack Overflow用户
提问于 2013-01-03 22:17:16
回答 1查看 510关注 0票数 0

我正在寻找改进的WCF客户端/服务器,以便它将处理大量的小文件,比目前更快。

我已经编写了一个WCF客户端和一个服务器来在网络上移动文件。

我通过从客户机调用到服务器(将我想要下载的文件的名称作为参数发送),然后让服务器返回一个Stream,从而使其正常工作

简化示例:

代码语言:javascript
复制
//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文件,我基本上被限制在最大10Kb。

我希望有人有一个替代实现的建议。我已经尝试从服务器返回一个流的列表,但我猜WCF不允许这样做。

我需要在不压缩文件的情况下做到这一点。

我正在考虑尝试返回一个由多个连接的流组成的流,但我不确定是否有更好的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-03 22:31:12

我会将WCF方法更改为接受一个文件名集合(例如,List<string>string[]),然后将它们打包。我知道SharpZipLib在生成ZIP文件方面做得很好。

您将ZIP文件流式传输回客户端,然后客户端将其解压缩并处理这些文件。

一个更大的文件传输速度应该快几个数量级,带宽也会更小(因为你会处理更少的网络相关开销),更不用说你会有一个WCF调用而不是每个文件一个WCF调用(一个巨大的瓶颈)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14140646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档