در اپلیکیشنهای داتنت که در حجم بالا با JSON سروکار دارند، استفاده از JsonSerializer باعث کندی در شروع برنامه، مصرف زیاد حافظه و کاهش سرعت میشود. دلیل این موضوع استفاده از Reflection در زمان اجراست که منابع زیادی مصرف میکند.
راهحل:
در داتنت ۶ قابلیت جدیدی معرفی شده: Source Generator برای System.Text.Json. این ابزار در زمان کامپایل کدهای لازم برای سریالسازی و دیسریالسازی را تولید میکند، و دیگر نیازی به Reflection در زمان اجرا نیست!
مزایای این موضوع:
- افزایش سرعت سریالسازی تا ۱.۶ برابر
- کاهش زمان شروع برنامه
- کاهش مصرف حافظه
- سازگاری بهتر با trimming و کاهش حجم نهایی اپ
public class Person {
public string FirstName { get; set; }
public string LastName { get; set; }
}حالا با استفاده از Source Generator:
[JsonSerializable(typeof(Person))]
internal partial class MyJsonContext : JsonSerializerContext { }
و برای سریالسازی:
var person = new Person { FirstName = "Jane", LastName = "Doe" };
var json = JsonSerializer.Serialize(person, MyJsonContext.Default.Person);📎 برای جزئیات بیشتر، مطلب کامل را اینجا بخوانید.
⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنتها به اشتراک بگذارید.
#حامد_حاجیلو (لینکدین)
کانال تلگرام:
@SoftwarePhilosophy
______