【问题标题】:How to zip and transfer a folder of files in WCF如何在 WCF 中压缩和传输文件文件夹
【发布时间】:2015-08-25 15:07:15
【问题描述】:

我有一个具有这些端点的 WCF 服务:

  1. NET TCP 端点。
  2. 一个 REST 端点。

我的服务托管在 IIS 上。

我在 web 服务中有一个函数,我在其中发送一个文件夹名称(会根据输入进行更改。比如说“FolderData”)。 Web 服务在主文件夹 (Let Say D:\MasterDumps) 下查找并找到文件夹“FolderData”。该文件夹通常包含几个 XML 文件和一个 Excel 文件。文件夹的大小从 1 MB 到 100 MB(最小和最大)不等。

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

我正在查看 utility 以压缩和解压缩文件。对于传输,我正在考虑返回一个流。

显然,我想尽可能地压缩数据,以减少通过网络传输的数据。

如果我走在正确的道路上,我想要一些建议。还有没有更好的方法来实现这一点。可能是一种更好的压缩方法(.NET 库),如果我可以在通过网络发送流时应用压缩。

感谢任何建议。博客或链接会有所帮助。

【问题讨论】:

  • 对于压缩部分,请尝试搜索“在 c# 中压缩文件”之类的内容
  • 如果您使用的是 .net >= 4.5 ,则可以使用 ZipFile 类 (msdn.microsoft.com/en-us/library/…)

标签: c# wcf compression streaming


【解决方案1】:

考虑一下我发现的可能对您有帮助的链接。

  1. EnablingDynamicCompressionGzipDeflateForWCF

  2. MSDN

【讨论】:

    【解决方案2】:

    请考虑:

    1. 在 WCF 中使用流传输模式(请参阅“流数据”一章,Streaming Message Transfer, MSDN)并适当地更新流数据的合同(请参阅 How to: Enable Streaming, MSDN)。
    2. 使用支持流式传输的适当 ZIP 压缩/解压缩库(例如,来自 .NET Framework 4.5 的 ZipArchive ClassDotNetZip 等)。

    【讨论】:

    • 嗨,谢尔盖,感谢您的回复。我在两个端点中都使用流模式。我使用 DotNetZip 作为压缩库。我的问题是: 1. 有没有更好的压缩库可以减少 DotNetZip 的压缩。 2. 另外,当我通过 WCF 响应流式传输 Zip 文件时,我也可以压缩流吗?
    • @Shankar,不客气! 1、应单独调查。但是,例如,可以考虑使用 7-Zip (SevenZipSharp)。 2.“压缩流”是什么意思?
    • 嗨,谢尔盖,我会看看七拉链。我所说的流压缩的意思是,当我流式传输和传输压缩文件夹时,是否有任何机制可以通过压缩的 zip 发送(只是为了进一步压缩它)。 - 吉里哈
    • @Shankar,我刚刚更新了答案。请看第一项。
    猜你喜欢
    • 2010-12-14
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多