.NET 压缩库的建议

发布于 2024-09-06 09:43:31 字数 1536 浏览 4 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

秋千易 2024-09-13 09:43:31

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

对于通过套接字连续使用(而不是 HTTP 的谨慎请求/响应),我建议查看 Serializer.SerializeWithLengthPrefix / Serializer.DeserializeWithLengthPrefix 操作(protobuf 本身不包含终止符,因此需要长度前缀来处理单独的消息)。

If you are compressing data, then you might look at high-density serialization, rather than compression. Something like protobuf. There are a few C# implementations here. For existing objects, protobuf-net is IMO the simplest to implement (disclosure: I'm the author - but it is free etc). You just serialize to the stream, or if you want a byte[], a separate MemoryStream.

For continuous use over a socket (rather than the discreet request/response of HTTP), I would suggest looking at the Serializer.SerializeWithLengthPrefix / Serializer.DeserializeWithLengthPrefix operations (protobuf doesn't itself include a terminator, so a length-prefix is necessary to handle separate messages).

月亮坠入山谷 2024-09-13 09:43:31

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


DotNetZip< /p>

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

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

DotNetZip offers native support and has a quite friendly API and is my opinion more flexible than SharpZipLib:

DotNetZip

EDIT: Unfortunately, DotNetZip has some critical issues and the project seems no longer be actively be maintained. Therefore, this library can't really be recommended for use in production code.

Better alternatives would be to use SharpZipLib (if you comply with their GPL-based license), one of the .NET ports of zlib or the zip support of .NET 4.5 as shown in this answer.

听风吹 2024-09-13 09:43:31

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

SharpZipLib is an alternative. It's said that it's written more thoughtfully than the framework library GZipStream

秋日私语 2024-09-13 09:43:31

.NET 3+ 现在具有内置 Zip 支持,其中 ZipPackage 类。

.NET 3+ has built-in Zip support now, with the ZipPackage class.

桜花祭 2024-09-13 09:43:31

LZMA 应该是最好的压缩方法之一。 7-Zip 是 LZMA 的公共域 SDK 实现,可在此处免费下载:

http://www.7-Zip. 7-zip.org/sdk.html

有关压缩算法的维基百科

7z的LZMA算法达到更高
压缩比高于 RAR,除了
“多媒体”文件,例如 .wav 和 .bmp
RAR 使用专门的文件
优于 LZMA 的例程。[7]
其他免费压缩软件,例如
通常如 NanoZip 和 FreeArc
优于 WinRAR。[8]

LZMA is supposed to be among the best for compression. 7-Zip is a public domain SDK implementation of LZMA, freely downloadable here:

http://www.7-zip.org/sdk.html

Wikipedia on compression algorithms:

7z's LZMA algorithm reaches a higher
compression ratio than RAR, except for
"multimedia" files like .wav and .bmp
files where RAR uses specialized
routines that outperform LZMA.[7]
Other free compression software such
as NanoZip and FreeArc usually
outperform WinRAR.[8]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文