在WCF服务方法中上载文件

时间:2009-08-19 20:23:02

标签: c# xml wcf performance

我有WCF服务,我可以上传文件。

XElement upload = service.UploadFiles(id, File.ReadAllBytes(filePath));

这样可行,但我只是想知道当你有很多(大约一千个)小文件(15~20K)时,是否最好逐个上传每个文件。如何我们可以比较“矮胖”和“健谈”的方法吗?

1)发送每个文件是否更好,或者将它们全部压缩到一个文件中,以节省确认每个文件的延迟时间。

2)话虽如此,我需要增加数组或其他设置的最大大小,因为我想将它们拼接在一起。这是推荐的吗?因为我读到,与发送一个大文件和最后一个确认相比,对每个人的确认可能更昂贵?

谢谢,

1 个答案:

答案 0 :(得分:2)

你似乎知道,你通常希望你的服务“矮胖”而不是“健谈”。具体方案中的答案取决于:

  • 所有文件的总数有多大。
  • 您是否以及如何使用您目前获得的确认。如果您需要更新每个文件的UI,您会发现如果您一次发送所有文件,就很难保持详细程度。
  • 您需要什么类型的可靠性/可重试性。现在,如果您的服务或连接中断,您只需重新发送未发送的文件即可。如果您将所有文件一起批处理,则必须重新开始,这可能是也可能不是一个大问题。

如果可以,您可能希望查看使用WCF发送Streams的支持:

通过发送Stream,您可以获得压缩整批文件的大小优势,同时仍然能够在上传过程中了解您的进度。

我不确定有关增加最大邮件大小的任何具体问题,除了它对内存使用的影响之外。最后,我会说你应该拉上这些文件,无论你是否将它们全部发送出去。