Рекомендации для [закрытой] библиотеки сжатия.NET

24
задан johnnyRose 26 November 2018 в 19:19
поделиться

5 ответов

SharpZipLib - альтернатива. Говорят, что она написана более продуманно, чем фреймворковая библиотека GZipStream

4
ответ дан 29 November 2019 в 00:12
поделиться

.NET 3+ теперь имеет встроенную поддержку Zip с классом ZipPackage .

1
ответ дан 29 November 2019 в 00:12
поделиться

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

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

11
ответ дан 29 November 2019 в 00:12
поделиться

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

DotNetZip

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

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

9
ответ дан 29 November 2019 в 00:12
поделиться

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

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

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

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

1
ответ дан 29 November 2019 в 00:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: