#DI #AspCore #DependencyInjection #DesignPattern #LooselyCoupled
#LifeTime #تزریق_وابستگی
AddTransient :
در این طول عمر، هر بار که یک سرویس/کلاس درخواست شود یک نمونه جدید ایجاد خواهد شد.
این یعنی، شما میتوانید نمونه های مختلفی از همان کلاس را در همان گراف
وابستگی داشته باشید.
AddScoped :
در این طول عمر، به ازای هر درخواست HTTP یک نمونه از سرویس ایجاد
و در پایان کار درخواست از حافظه حذف میشود.
مانند DbContext انتیتی فریمورک.
AddSingleton :
در این طول عمر، شما در طول کل حیات اپلیکیشن تنها یک نمونه از سرویس
را دریافت خواهید کرد. بدین صورت که کلاس تنها یک بار ایجاد و در مراجعات بعدی از همان استفاده خواهد شد.
این حالت مشابه کلاس های استاتیکه و معمولا برای سرویس هایی که هزینه نمونه سازی مجدد و پاکسازی حافظه در اونها زیاده، و یا نیاز به نگهداری حافظه متغیر هاست به کار میره.
مانند HttpContextAccessor
#LifeTime #تزریق_وابستگی
AddTransient :
در این طول عمر، هر بار که یک سرویس/کلاس درخواست شود یک نمونه جدید ایجاد خواهد شد.
این یعنی، شما میتوانید نمونه های مختلفی از همان کلاس را در همان گراف
وابستگی داشته باشید.
AddScoped :
در این طول عمر، به ازای هر درخواست HTTP یک نمونه از سرویس ایجاد
و در پایان کار درخواست از حافظه حذف میشود.
مانند DbContext انتیتی فریمورک.
AddSingleton :
در این طول عمر، شما در طول کل حیات اپلیکیشن تنها یک نمونه از سرویس
را دریافت خواهید کرد. بدین صورت که کلاس تنها یک بار ایجاد و در مراجعات بعدی از همان استفاده خواهد شد.
این حالت مشابه کلاس های استاتیکه و معمولا برای سرویس هایی که هزینه نمونه سازی مجدد و پاکسازی حافظه در اونها زیاده، و یا نیاز به نگهداری حافظه متغیر هاست به کار میره.
مانند HttpContextAccessor