Dependency Lifetimes: Singleton, Transient, Scoped
Bu yazımızda yaşam süresi yaklaşımları (lifetime management approaches) üzerinde singleton, transient ve scoped yaklaşımlarını inceleyeceğiz.
Yazılım geliştirme süreçlerinde “lifetime” kavramı, bir nesnenin ömrünün ne kadar süreyle yönetileceğini ifade eder. Bu, nesnelerin yaşam döngüsünün nasıl ele alındığını ve ne zaman oluşturulup ne zaman yok edileceğini belirler. Lifetime yönetimi genellikle Dependency Injection çerçevesinde kullanılır ve üç ana türde sınıflandırılır: Singleton, Transient, ve Scoped. Bu kavramları daha detaylı inceleyelim:
Singleton:
- Tanım: Singleton lifetime, bir sınıfın yalnızca bir örneğinin oluşturulup tüm uygulama süresince kullanılması anlamına gelir.
- Kullanım Alanları: Konfigürasyon ayarları, uygulama düzeyinde paylaşılan durum veya veri gibi durumlarda kullanılır.
Transient:
- Tanım: Transient lifetime, her istek yapıldığında yeni bir nesne örneği oluşturulmasını ifade eder.
- Kullanım Alanları: Kısa ömürlü nesneler, hafif servisler veya durum bilgisi tutmayan işlemler için idealdir.
Scoped:
- Tanım: Scoped lifetime, nesnenin ömrünün belirli bir kapsam içinde sınırlı olmasını ifade eder. Genellikle bir web isteği veya iş parçacığı kapsamında kullanılır.
- Kullanım Alanları: Web uygulamalarında, her HTTP isteği için aynı nesne örneğini kullanmak gerektiğinde tercih edilir.
Bu lifetime yönetimi türleri, özellikle Dependency Injection kullanılarak uygulamalarda bağımlılıkların yönetilmesi ve nesnelerin yaşam döngüsünün kontrol edilmesi açısından önemlidir. Hangi tür lifetime’ın seçileceği, uygulamanın gereksinimlerine ve nesnelerin nasıl kullanıldığına bağlı olarak değişir.


