Подтвердить что ты не робот

Рекомендации для библиотеки сжатия .NET

Я ищу некоторые рекомендации по сжатию данных в .NET, кроме использования класса GZipStream. Я ищу быстрое и высокое сжатие байтовых массивов, чтобы отправлять их через tcp.

Спасибо.

4b9b3361

Ответ 1

SharpZipLib является альтернативой. Он сказал, что это написано более тщательно, чем библиотека рамки GZipStream

Ответ 2

Если вы сжимаете данные, вы можете посмотреть сериализацию с высокой плотностью, а не на сжатие. Что-то вроде protobuf. Существует несколько реализаций С# здесь. Для существующих объектов protobuf-net является ИМО самым простым в реализации (раскрытие: я автор, но это бесплатно и т.д.). Вы просто сериализуете поток, или хотите byte[], отдельный MemoryStream.

Для непрерывного использования по сокету (а не к секретному запросу/отклику HTTP) я бы предложил посмотреть операции Serializer.SerializeWithLengthPrefix/Serializer.DeserializeWithLengthPrefix (protobuf сам не включает терминатор, поэтому префикс длины необходимо обрабатывать отдельные сообщения).

Ответ 3

DotNetZip предлагает встроенную поддержку и имеет довольно дружественный API, и мое мнение более гибкое, чем SharpZipLib:

DotNetZip

EDIT: К сожалению, у DotNetZip есть некоторые критические проблемы, и проект, похоже, больше не поддерживается. Поэтому эта библиотека не может быть рекомендована для использования в производственном коде.

Лучшими альтернативами будет использование SharpZipLib (если вы согласны с их лицензией на основе GPL), одним из .NET-портов zlib или поддержкой zip.NET 4.5, как показано в этом ответе.

Ответ 4

У .NET 3+ теперь есть встроенная поддержка Zip, с классом ZipPackage.

Ответ 5

LZMA считается одним из лучших для сжатия. 7-Zip - это реализация SDK в общедоступном домене LZMA, свободно загружаемая здесь:

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

Википедия по алгоритмам сжатия:

7z Алгоритм LZMA достигает более высокого чем RAR, за исключением "мультимедийные" файлы, такие как .wav и .bmp файлы, в которых RAR использует специализированные которые превосходят LZMA. [7] Другое программное обеспечение для свободного сжатия, такое как как правило, NanoZip и FreeArc превосходят WinRAR. [8]