CodeShot
Midسختی 3 از ۵· در 87٪ مصاحبه‌های این حوزه پرسیده شده

تفاوت AddScoped، AddTransient و AddSingleton چیست؟

نشان کردن

پاسخ کوتاه

Transient هر بار درخواست، نمونه جدید می‌سازد؛ Scoped یک نمونه مشترک در هر Request دارد؛ Singleton یک نمونه برای کل عمر برنامه دارد.

پاسخ کامل

انتخاب Lifetime درست مهم است: Transient برای سرویس‌های سبک و بدون وضعیت، Scoped برای چیزهایی مثل DbContext که باید در طول یک Request یکسان بمانند، و Singleton برای منابع مشترک و پرهزینه که باید فقط یک‌بار ساخته شوند.

اشتباه رایج

❌ تزریق یک سرویس Scoped (مثل DbContext) داخل یک سرویس Singleton — باعث نگهداری یک Instance قدیمی در طول عمر برنامه می‌شود.