2015-08-25 33 views
0

传输文件的文件夹,我具备这些端点WCF服务:如何压缩和WCF

  1. 净TCP端点。
  2. REST端点。

我的服务托管在IIS上。

我有一个web服务中的功能,我发送一个文件夹的名称(将根据输入改变,假设说“FolderData”)。 Web服务查看主文件夹(Let Say D:\ MasterDumps)并找到文件夹“FolderData”。该文件夹通常包含几个XML文件和一个Excel文件。文件夹的大小从1 MB到100 MB不等(最小值为&)。

我想压缩此文件夹“FolderData”并将其发送到客户端。在客户端,我想提取内容并阅读文件并在业务逻辑中使用它们。

我正在看这个utility压缩和解压缩文件。对于转移,我正在查看返回流。

显然我想尽可能地压缩数据,以便通过电线传输的数据更少。

如果我在正确的道路上,我想提出一些建议。还有什么更好的方法来实现这一点。可能是更好的压缩方法(.NET库),如果我可以在通过电线发送流时应用压缩。

任何建议表示赞赏。博客或链接将有所帮助。

+0

对于荏苒部分,尝试搜索类似 – TheLethalCoder

+1

'在C#压缩和解文件' 如果你在.NET> = 4.5,有一个使用ZipFile类可用(https://msdn.microsoft.com/en-us/library/system.io.compression.zipfile(v=vs.110).aspx) –

回答

0

请考虑:

  1. 使用WCF的流传输模式(见“流数据”一章,Streaming Message Transfer, MSDN),并适当地更新针对流数据的合同(见How to: Enable Streaming, MSDN)。
  2. 使用支持流式传输的相应ZIP压缩/解压缩库(例如,来自.NET Framework 4.5,DotNetZip等的ZipArchive Class)。
+0

您好谢尔盖,感谢您的答复。我在两个端点都使用了流模式。我使用DotNetZip作为压缩库。我的问题是:1.是否有更好的压缩库,可以让我减少DotNetZip的压缩。 2.当我通过WCF响应流式传输Zip文件时,我也可以压缩这个流吗? – Shankar

+0

@Shankar,不客气! 1.应该单独调查。但是,例如,可以考虑7-Zip([SevenZipSharp](https://sevenzipsharp.codeplex.com/))。 2。“压缩流”也是什么意思? –

+0

嗨,谢尔盖,我会看看Seven Zip。压缩流的意思是,当我流并传输压缩文件夹时,有任何机制可以通过压缩zip发送(只是为了进一步压缩)。 - Girija – Shankar