.NET 9.0'da yeni [25]: Zlibs ve Brots ile Sıkıştırma Ayarları

Womanne

Member
.NET yıllardır Zlibs ve Brots ile sıkıştırma öğrendi. .NET 9.0 ile Microsoft artık iki sınıfa liderlik ediyor ZLibCompressionOptions VE BrotliCompressionOptions Belirli sıkıştırma ayarları oluşturabileceğiniz biri.






Dotnet Doctor-Holger Schwichtenberg




Holger Schwichtenberg, 53 ünlü uzmanla tavsiye ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.







Sınıfta ZLibCompressionOptions Mülkler var CompressionStrategy Bir numaralandırma şeklinde e CompressionLevel 0 ile 9 arasında bir bütün olarak, burada 0 sıkıştırma anlamına gelmez. Sınıfta BrotliCompressionOptions Sadece bir mülk var Quality 0'dan 11'e kadar.



Aşağıdaki kod, on ZLIB sıkıştırma seviyesinin tamamı ve Brotli'nin sıkıştırılması için 12 kalite seviyesinin tamamı için 100.000 karakter içeren sıkıştırılmış bir metnin boyutunu harcayan bir uygulama örneğini göstermektedir:



public class FCL9_Compression
{

string GetText(int length = 1)
{
string text = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.";
// length * text
for (int i = 0; i < length; i++) text += text;
Console.WriteLine("Länge Originaltext: " + text.Length);
return text;
}

public void ZLib()
{
string text = GetText(3);
int level = 5; // 0-9
var uncompressedStream = new MemoryStream(Encoding.UTF8.GetBytes(text));
var compressedStream = new MemoryStream();
using var zipStream = new ZLibStream(compressedStream, new ZLibCompressionOptions() { CompressionLevel = level, CompressionStrategy = ZLibCompressionStrategy.Default });
uncompressedStream.CopyTo(zipStream);
zipStream.Flush();
Console.WriteLine($"Länge bei ZLib-Komprimierungslevel #{level}: " + compressedStream.Length);
zipStream.Dispose();
}

public void Brotli()
{
string text = GetText(3);
int quality = 5; // 0-11
var uncompressedStream = new MemoryStream(Encoding.UTF8.GetBytes(text));
var compressedStream = new MemoryStream();
using var brotliStream = new BrotliStream(compressedStream, new BrotliCompressionOptions() { Quality = quality });
uncompressedStream.CopyTo(brotliStream);
brotliStream.Flush();
Console.WriteLine($"Länge bei Brotli-Komprimierungslevel #{quality}: " + compressedStream.Length);
brotliStream.Dispose();
}

public void ZLibAndBrotliComparison()
{
CUI.Demo();

string text = GetText(3);

for (int i = 0; i <= 9; i++)
{
var uncompressedStream = new MemoryStream(Encoding.UTF8.GetBytes(text));
var compressedStream = new MemoryStream();
using var zipStream = new ZLibStream(compressedStream, new ZLibCompressionOptions() { CompressionLevel = i, CompressionStrategy = ZLibCompressionStrategy.Default });
uncompressedStream.CopyTo(zipStream);
zipStream.Flush();
Console.WriteLine($"Länge bei ZLib-Komprimierungslevel #{i}: " + compressedStream.Length);
zipStream.Dispose();
}

for (int i = 0; i <= 11; i++)
{
// Kopiere den Text in einen MemoryStream
var uncompressedStream = new MemoryStream(Encoding.UTF8.GetBytes(text));
var compressedStream = new MemoryStream();
using var brotliStream = new BrotliStream(compressedStream, new BrotliCompressionOptions() { Quality = i });
uncompressedStream.CopyTo(brotliStream);
brotliStream.Flush();
Console.WriteLine($"Länge bei Brotli-Komprimierungslevel #{i}: " + compressedStream.Length);
brotliStream.Dispose();

//// Dekomprimiere den Text wieder
//compressedStream.Position = 0;
//var decompressedStream = new MemoryStream();
//using var brotliDecompressionStream = new BrotliStream(compressedStream, CompressionMode.Decompress);
//brotliDecompressionStream.CopyTo(decompressedStream);
//brotliDecompressionStream.Flush();
//Console.WriteLine("Dekomprimierter Text);
//string text2 = Encoding.UTF8.GetString(decompressedStream.ToArray());
//Console.WriteLine("Dekomprimierter Text: " + text2.Length);
}

}
}





Ekran görüntüsü sıkıştırma



Kod örneğinin çıkışı, farklı sıkıştırma ayarları boyunca uzunlukları gösterir.


(Resim: Ekran görüntüsü (Holger Schwichtenberg))




18 Kasım 2025'te BetterCode Online Konferansı () 10.0



(Resim: Coffeemill/123rf.com)


Sonraki LTS çıktısı devam ediyor: BetterCode Online Konferansı () .NET 10.0'da IX ve DPunkt.verlag tarafından düzenlenen 18 Kasım 2025'te IT-visions.de-Sesler Bu makalenin yazarı Dr. Holger Schwichtenberg ve diğer uzmanlar en önemli yenilikler. Bunlar.

Çevrimiçi mağazada indirimli kör kuş biletleri zaten mevcut olana kadar program henüz yayınlanmadı. Bir önceki yılın programı arşivde görüntülenebilir.








(RME)




Ne yazık ki, bu bağlantı artık geçerli değil.

Boşa harcanan eşyalara bağlantılar, 7 günlük daha büyükse veya çok sık çağrılmışsa gerçekleşmez.


Bu makaleyi okumak için bir Haberler+ paketine ihtiyacınız var. Şimdi yükümlülük olmadan bir hafta deneyin – yükümlülük olmadan!
 

Alkoz

Global Mod
Global Mod
.NET yıllardır Zlibs ve Brots ile sıkıştırma öğrendi. .NET 9.0 ile Microsoft artık iki sınıfa liderlik ediyor ZLibCompressionOptions VE
Selam kankalar

İçeriğin akışı çok başarılı olmuş, özellikle teknik kısımlarda bile zorlanmadan okunuyor @Womanne

Satır aralarındaki emek kendini hissettiriyor; detaylara verilen önem harika @Womanne

Ekstra olarak bunu söylemek istedim, çok uzatmadan
 

GezginRuhlar

Global Mod
Global Mod
.NET yıllardır Zlibs ve Brots ile sıkıştırma öğrendi. .NET 9.0 ile Microsoft artık iki sınıfa liderlik ediyor ZLibCompressionOptions VE
Selam yol geçen hanı ahalisi

@Womanne okurken sürekli not alma isteği uyandıran yazılar nadir bulunur, bu onlardan biri

Bir köşede dursun, ileride bakınca iyi gelir belki

Alkoz' Alıntı:
Selam kankalar İçeriğin akışı çok başarılı olmuş, özellikle teknik kısımlarda bile zorlanmadan okunuyor @Womanne Satır aralarındaki emek kendini hissettiriyor; detaylara verilen önem harika @Womanne Ekstra olarak bunu
Evet güzel yazmışsın ama bazı şeylerin doğruluğu hala tartışılıyor @Alkoz
 

Defne

New member
.NET yıllardır Zlibs ve Brots ile sıkıştırma öğrendi. .NET 9.0 ile Microsoft artık iki sınıfa liderlik ediyor ZLibCompressionOptions VE
Merhaba tartışmaya katılanlara

Yazının temposu çok iyi ayarlanmış, ne sıkıcı ne yüzeysel, tam kararında

Son bir cümle daha ekledim, sonra susacağım :)

Alkoz' Alıntı:
Selam kankalar İçeriğin akışı çok başarılı olmuş, özellikle teknik kısımlarda bile zorlanmadan okunuyor @Womanne Satır aralarındaki emek kendini hissettiriyor; detaylara verilen önem harika @Womanne Ekstra olarak bunu
Bu bakış açını anlıyorum @Alkoz, fakat bazı yerlerde fazla kesin konuştuğunu düşünüyorum
 

Berk

New member
.NET yıllardır Zlibs ve Brots ile sıkıştırma öğrendi. .NET 9.0 ile Microsoft artık iki sınıfa liderlik ediyor ZLibCompressionOptions VE
Merhaba fikirleri olanlar

@Womanne gibi içerik üreticileri sayesinde bilgiye ulaşmak daha güvenli ve keyifli hale geliyor

Minik bir ek yaptım, işini hafifletirse ne ala

Defne' Alıntı:
Merhaba tartışmaya katılanlara Yazının temposu çok iyi ayarlanmış, ne sıkıcı ne yüzeysel, tam kararında Son bir cümle daha ekledim, sonra susacağım :) Bu bakış açını anlıyorum @Alkoz, fakat bazı yerlerde fazla kesin
Bu noktada biraz fazla genelleme yapmışsın gibi geliyor, yine de fikrine saygım var @Defne
 

Aylin

New member
.NET yıllardır Zlibs ve Brots ile sıkıştırma öğrendi. .NET 9.0 ile Microsoft artık iki sınıfa liderlik ediyor ZLibCompressionOptions VE
Selam fikir çatıştıranlara

Bilgiye ulaşmak bu kadar keyifli olduğunda, insan okumayı bırakmak istemiyor @Womanne

Bir satır fazla olsun ama eksik kalmasın dedim

GezginRuhlar' Alıntı:
Selam yol geçen hanı ahalisi @Womanne okurken sürekli not alma isteği uyandıran yazılar nadir bulunur, bu onlardan biri Bir köşede dursun, ileride bakınca iyi gelir belki Evet güzel yazmışsın ama bazı şeylerin doğruluğu
Özetin yerinde olmuş @GezginRuhlar, fazla uzatmaya gerek yok
 

Efe

New member
.NET yıllardır Zlibs ve Brots ile sıkıştırma öğrendi. .NET 9.0 ile Microsoft artık iki sınıfa liderlik ediyor ZLibCompressionOptions VE
Selam uğrayanlara

Dilindeki zenginlik ve netlik birleşince ortaya çok etkili bir içerik çıkmış @Womanne

İşine yarar diye şöyle bir not daha sıkıştırdım, umarım denk gelir

Alkoz' Alıntı:
Selam kankalar İçeriğin akışı çok başarılı olmuş, özellikle teknik kısımlarda bile zorlanmadan okunuyor @Womanne Satır aralarındaki emek kendini hissettiriyor; detaylara verilen önem harika @Womanne Ekstra olarak bunu
Dürüst olayım @Alkoz, bu örnek bana pek inandırıcı gelmedi
 

Murat

New member
.NET yıllardır Zlibs ve Brots ile sıkıştırma öğrendi. .NET 9.0 ile Microsoft artık iki sınıfa liderlik ediyor ZLibCompressionOptions VE
Selam dostlar

Bu tarz nitelikli içeriklerin değeri zamanla daha çok anlaşılacak, eline sağlık

Uzun uzadıya yazmadım, sadece bir ipucu bıraktım

Berk' Alıntı:
Merhaba fikirleri olanlar @Womanne gibi içerik üreticileri sayesinde bilgiye ulaşmak daha güvenli ve keyifli hale geliyor Minik bir ek yaptım, işini hafifletirse ne ala Bu noktada biraz fazla genelleme yapmışsın gibi
İşin teorik kısmı kadar uygulama tarafı da sıkıntılı @Berk, buna dikkat çekmen güzel olmuş
 

Erdemitlee

Global Mod
Global Mod
.NET yıllardır Zlibs ve Brots ile sıkıştırma öğrendi. .NET 9.0 ile Microsoft artık iki sınıfa liderlik ediyor ZLibCompressionOptions VE
Hem akademik altyapıya sahip hem de pratik bilgiyle desteklenmiş bir yazı olmuş @Womanne

Buna küçük bir dipnot ekledim, dikkatini çeker belki

Efe' Alıntı:
Selam uğrayanlara Dilindeki zenginlik ve netlik birleşince ortaya çok etkili bir içerik çıkmış @Womanne İşine yarar diye şöyle bir not daha sıkıştırdım, umarım denk gelir Dürüst olayım @Alkoz, bu örnek bana pek
Burada biraz cesur konuşmuşsun ama dayanak zayıf @Efe
 

Aksu

Global Mod
Global Mod
.NET yıllardır Zlibs ve Brots ile sıkıştırma öğrendi. .NET 9.0 ile Microsoft artık iki sınıfa liderlik ediyor ZLibCompressionOptions VE
Merhaba merak edenlere

Bu kadar yoğun bilgi dolu bir metni sade anlatmak gerçekten ayrı bir meziyet

Akademik bir içerik bu kadar sade ve anlaşılır anlatılabilir mi dedirtti bana @Womanne

Alkoz' Alıntı:
Selam kankalar İçeriğin akışı çok başarılı olmuş, özellikle teknik kısımlarda bile zorlanmadan okunuyor @Womanne Satır aralarındaki emek kendini hissettiriyor; detaylara verilen önem harika @Womanne Ekstra olarak bunu
Açıkçası söylediğin şey her durum için geçerli değil, özellikle bazı örneklerde tam tersi oluyor @Alkoz
 
Üst