.NET Core (C#) Orta Seviye Mimari & DI

Service Lifetimes: Transient, Scoped, Singleton

.NET IoC konteynerine bir nesneyi ne sıklıkla üretip ne zaman çöpe atacağını söyleme kuralı.

5 Yaşındaki Çocuğa Anlatır Gibi (Analoji)

Transient = Tek kullanımlık kağıt bardak (her su içişinde yeni bardak). Scoped = Masandaki servis tabağı (o restoranda oturduğun sürece tek tabak, kalktığında çöpe gider). Singleton = Restoran girişindeki duvar saati (herkes tek bir saate bakar).

Teknik ve Profesyonel Tanımı

ASP.NET Core IoC konteynerindeki nesne yaşam döngüleridir: 1) Transient her istekte yeni nesne üretir. 2) Scoped gelen her HTTP isteği (Request) başına 1 nesne üretir. 3) Singleton ise uygulama ömrü boyunca bellekte tek bir örnek tutar.

Mülakatta Ne Demelisin? (Kurtarıcı Altın Cevap)

"Transient her enjeksiyonda yeni nesne üretir. Scoped gelen her HTTP request boyunca tek bir nesne üretir ve request bitince dispose eder (örn: DbContext). Singleton uygulama açılışında bir kez üretilir ve tüm kullanıcılar tarafından ortak kullanılır (örn: Cache, Memory Logger)."

.NET Core (C#) Kod Örneği
builder.Services.AddTransient<IEmailSender, EmailSender>();
builder.Services.AddScoped<IUserRepository, UserRepository>(); // DbContext için standart!
builder.Services.AddSingleton<ICacheService, CacheService>();
Mülakat Tuzağı & En Çok Yapılan Hata:

Singleton bir servisin içine Scoped bir servis (örn: DbContext) enjekte etmek! Buna "Captive Dependency" denir ve bellek sızıntısına yol açar.

İlgili Diğer Konular
Asenkron
Async / Await & Thread vs Task

Uzun süren veritabanı veya HTTP isteklerinde işlemci çekirde...

Veritabanı & ORM
Entity Framework Core: AsNoTracking & Eager Loading

Sadece okuma yapacağın sorgularda EF Core'un hafıza takip me...