DbDataReader Streaming Serialization
DbDataReader sonuçlarını DataTable veya DTO koleksiyonu oluşturmadan typed getter'lar üzerinden doğrudan JSON/XML akışına yazan, şema bilgisini bir kez hazırlayan C# serileştirme katmanı.
Bu yazılımın çıkış noktası serileştiricinin hızından önce veri yolundaki gereksiz ara katmanlardı. Büyük bir sorgu sonucunu önce DataTable, List<DTO> veya sözlük koleksiyonuna doldurup sonra yeniden dolaşmak, hem allocation miktarını hem de GC baskısını artırıyor. Burada DbDataReader doğrudan Utf8JsonWriter ya da XmlWriter ile buluşturuluyor.
Sütun adı ve veri tipi gibi değişmeyen bilgiler ilk satırdan önce hazırlanıyor. JSON alan adları önceden encode ediliyor; mümkün olan CLR tiplerinde typed getter kullanılıyor. DbRowView ise her satır için yeni bir wrapper üretmek yerine aynı görünümü ilerleyen reader üzerinde yeniden kullanıyor. Bunun karşılığında sözleşme nettir: row view saklanacak kalıcı bir snapshot değildir.
Büyük LOB değerlerinde scalar fast path zorlanmıyor; provider'ın GetStream veya GetTextReader yoluna geçmek daha doğru. Aynı “metadata bir kez, tekrar eden satır yolu kısa” ilkesi kontrollü CSV/GZip verisinde CSV Enumerable projesinde başka biçimde uygulanıyor.
Teknik çözümleme: DbDataReader ile Akış Tabanlı JSON ve XML Serileştirme GitHub: GitHub Zenodo: Zenodo DOI: DOI