CodeShot

Singleton در مقابل Scoped

Singleton فقط یک بار در طول عمر برنامه ساخته می‌شود، اما Scoped در هر Request یک نمونه جدید ایجاد می‌کند.

ویژگیSingletonScoped
طول عمرکل برنامههر Request
تعداد نمونهیکیک در هر Request
مناسب DbContextخیربله
مصرف حافظهکمترمتوسط
Thread Safetyباید رعایت شودکمتر مسئله‌ساز است

کِی از Singleton استفاده کنیم؟

برای سرویس‌های Stateless مانند Cache یا Configuration.

کِی از Scoped استفاده کنیم؟

برای سرویس‌هایی که به DbContext وابسته هستند.

مثال Singleton

builder.Services .AddSingleton<ICacheService, CacheService>();

مثال Scoped

builder.Services .AddScoped<IUserService, UserService>();

اشتباه رایج

تزریق Scoped داخل Singleton.

جمع‌بندی

اکثر سرویس‌های Business در ASP.NET Core باید Scoped باشند.