Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, serileştirmeyle ilgili olarak yansıma ve kaynak oluşturma arasındaki farklar System.Text.Json açıklanmaktadır. Ayrıca senaryonuz için en iyi yaklaşımı seçme konusunda rehberlik sağlar.
Meta veri koleksiyonu
Bir türü seri hale getirmek veya seri durumdan çıkarmak için, JsonSerializer türün üyelerine erişme hakkında bilgi gerekir.
JsonSerializer aşağıdaki bilgilere ihtiyaç duyar:
- Serileştirme için özellik alıcılarına ve alanlarına erişme.
- Nasıl bir oluşturucuya, özellik ayarlayıcılarına ve alanlara seri durumdan çıkarma için erişilir.
- Serileştirmeyi veya seri durumdan kaldırmayı özelleştirmek için kullanılan öznitelikler hakkında bilgi.
- JsonSerializerOptions'dan çalışma zamanı yapılandırması.
Bu bilgiler meta veri olarak adlandırılır.
Yansıma
Varsayılan olarak, JsonSerializeryansıma kullanarak çalışma zamanında meta verileri toplar. Bir JsonSerializer türü ilk kez seri hale getirmesi veya seri durumdan çıkarması gerektiğinde, bu meta verileri toplar ve önbelleğe alır. Meta veri toplama işlemi zaman alır ve belleği kullanır.
Kaynak oluşturma
Alternatif olarak, performansı geliştirmek, System.Text.Json özel bellek kullanımını azaltmak ve uygulama boyutunu azaltan derleme kırpmayı kolaylaştırmak için C# kaynak oluşturma özelliğini kullanabilir. Ayrıca, bazı yansıma API'leri Yerel AOT uygulamalarında kullanılamaz, bu nedenle bu uygulamalar için kaynak oluşturmayı kullanmanız gerekir.
Kaynak oluşturma iki modda kullanılabilir:
Meta veri tabanlı mod
Derleme sırasında,
System.Text.Jsonserileştirme için gereken bilgileri toplar ve istenen türler için JSON sözleşme meta verilerini dolduran kaynak kod dosyaları oluşturur.Serileştirme-iyileştirme (hızlı yol) modu
JsonSerializer adlandırma ilkeleri ve başvuru koruması gibi serileştirme çıkışını özelleştiren özellikler bir performans yükü taşır. Serileştirme-iyileştirme modunda, System.Text.Json'i doğrudan kullanan optimize edilmiş serileştirme kodunu
Utf8JsonWriteroluşturur. Bu iyileştirilmiş veya hızlı yol kodu serileştirme aktarım hızını artırır.Hızlı yol seri durumdan çıkarma şu anda kullanılamıyor. Daha fazla bilgi için bkz . dotnet/runtime issue 55043.
System.Text.Json için kaynak oluşturma, C# 9.0 veya daha yeni bir sürüm gerektirir.
Özellik karşılaştırması
Her birinin sunduğu aşağıdaki avantajlara göre yansıma veya kaynak oluşturma modlarını seçin:
| Avantaj | Yansıma | Kaynak oluşturma (Meta veri tabanlı mod) |
Kaynak oluşturma (Serileştirme-iyileştirme modu) |
|---|---|---|---|
| Kod daha basit. | ✔️ | ❌ | ❌ |
| Hata ayıklamak daha kolay. | ❌ | ✔️ | ✔️ |
| Gizli üyeleri destekler. | ✔️ | ✔️* | ✔️* |
| Kullanılabilir tüm serileştirme özelleştirmelerini destekler. | ✔️ | ❌ † | ❌ † |
| Başlangıç süresini azaltır. | ❌ | ✔️ | ✔️ |
| Özel bellek kullanımını azaltır. | ❌ | ✔️ | ✔️ |
| Çalışma zamanı yansımasını ortadan kaldırır. | ❌ | ✔️ | ✔️ |
| Boyut azaltmanın güvenli bir şekilde yapılmasını kolaylaştırır. | ❌ | ✔️ | ✔️ |
| Serileştirme aktarım hızını artırır. | ❌ | ❌ | ✔️ |
* Kaynak oluşturucu, aynı derlemedeki iç türler gibi bazı genel olmayan üyeleri destekler. † Kaynak tarafından oluşturulan sözleşmeler, sözleşme özelleştirme API'si kullanılarak değiştirilebilir.