.NET压缩库的建议

G-M*_*Man 24 c# compression

我正在寻找一些关于在.NET中压缩数据的建议,除了使用GZipStream该类.

我正在寻找字节数组的快速和高压缩,以便能够通过TCP发送它们.

Mar*_*ell 11

如果要压缩数据,那么您可能会考虑高密度序列化而不是压缩.像protobuf这样的东西.这里有一些C#实现.对于现有对象,protobuf-net是最容易实现的IMO(披露:我是作者 - 但它是免费的等等).您只需序列化到流,或者如果您想要byte[]一个单独的MemoryStream.

对于连续通过套接字(而不是HTTP的离散请求/响应)的使用,我建议在看Serializer.SerializeWithLengthPrefix/ Serializer.DeserializeWithLengthPrefix操作(protobuf的不本身包括一个终止子,所以长度前缀是必要的处理独立消息).


Dir*_*mar 9

DotNetZip提供本机支持,并且具有非常友好的API,我认为比SharpZipLib更灵活:

DotNetZip

编辑:不幸的是,DotNetZip有一些关键问题,项目似乎不再积极维护.因此,实际上不建议在生产代码中使用此库.

更好的替代方案是使用SharpZipLib(如果您遵守他们的基于GPL的许可证),zlib.NET端口之一或.NET 4.5的zip支持,如本答案中所示.


BC.*_*BC. 4

SharpZipLib是一种替代方案。据说比框架库GZipStream写得更周到

  • SharpZipLib 缺乏维护且存在缺陷。最后一次发布于 2010 年 6 月。有时 7zip、ioniczip 等生成的 zip 文件会出现问题,即使 zip 文件完全正常。我们在我的工作中使用它作为一个组件,并且不得不求助于修复源代码并在本地构建,这并不是什么大不了的事情,但如果您正在寻找交钥匙 zip 库,则不是您想要进入的东西。 (7认同)