ما میدانیم که در حالت عادی درخواست ها و پاسخ های وب بدون حالت ( Stateless ) هستند و در هر درخواست اشیا قبلی از دست می روند.
اما در Asp.Net Core می توانیم طول عمر اشیا را کنترل کنیم.
برای این کار از Dependency Injection و توابعی که در ادامه خواهیم دید، استفاده میکنیم.
این حالت با استفاده از تابع AddTransient در زمان تزریق وابستگی مشخص می شود.
در این حالت که به گذرا هم معروف است، به ازای هر بار صدازده شدن، یک نمونه جدید از سرویس توسط ظرف نگهدارنده سرویس ها ساخته شده و مورد استفاده قرار می گیرد.
در نتیجه، این نوع از سرویس ها طول عمر پایین تری دارند و بر روی عملکرد Garbage Collector نیز تاثیر می گذارند و سربار بیشتری ایجاد می کنند.
این حالت با استفاده از تابع AddScoped در زمان تزریق وابستگی مشخص می شود.
در این حالت، برخلاف حالت قبل، در طول حیات درخواست جاری(Scoped Request)، یک سرویس ساخته شده و هر کلاسی که به این سرویس نیاز داشته باشد، از همین نمونه ساخته شده استفاده میکند و سرویس جدیدی ساخته نمی شود.
به عنوان مثال، معمولا درخواست های مرتبط با عملیات های دیتابیس از این نوع ثبت می شود.
این حالت با استفاده از تابع AddSingleton در زمان تزریق وابستگی مشخص می شود.
این سرویس ها دارای بیشترین طول عمر هستند و در طول مدت حیات برنامه، باقی می مانند و فقط یک نمونه از انها ساخته می شود. از آنجا که این سرویس ها در طول چرخه حیات نرم افزار باقی مانده و قابل دسترسی هستند، لذا معمولا دسترسی به آنها و سرعت عملکرد انها بیشتر است.
لینک منابع: