🌹 Merhaba değerli bağlantılarım, 👨💻 bugün sizlere Dependency Injection (DI) ve bu yapının sunduğu yaşam döngüleri hakkında bilgi vereceğim. Bu kavramlar, yazılım geliştirme süreçlerinde büyük önem taşır, çünkü kodunuzu daha esnek, modüler ve test edilebilir hale getirir.
🤔 Dependency Injection nedir?
Dependency Injection (DI), sınıflar arası bağımlılıkları yönetmek için kullanılan bir tasarım desenidir. Bu yaklaşım, bir sınıfın ihtiyaç duyduğu bağımlılıkları dışarıdan almasını sağlar. Böylece bağımlılıklar daha merkezi ve kontrol edilebilir hale gelir. Kodunuzu sıkı bağlardan kurtararak, daha esnek ve yeniden kullanılabilir bir yapıya ulaşmanıza olanak tanır.
➡️ Yaşam Döngüleri (Lifetimes)
DI ile bağımlılıkları tanımlarken, bu bağımlılıkların ne kadar süreyle yaşadığını belirtmek için çeşitli yaşam döngüleri kullanılır. .NET Core'da üç ana yaşam döngüsü vardır:
Transient (AddTransient)
Singleton (AddSingleton)
Scoped (AddScoped)
➡️ Transient (AddTransient):
🛠 Transient yaşam döngüsü, her çağrıda yeni bir nesne oluşturur. Yani bir bağımlılığı her kullandığınızda, o bağımlılık yeniden yaratılır. Bu, kısa süreli ve hafif bağımlılıklar için idealdir. Ancak, sık kullanılan ve maliyeti yüksek olan nesneler için tercih edilmez.
Kullanım Alanı: Kısa ömürlü işlemler ve servisler.
Örnek: Bir kullanıcıya özel bildirim oluşturmak gibi, her seferinde farklı veri içeren işlemler.
➡️ Singleton (AddSingleton):
🛠 Singleton yaşam döngüsünde, bağımlılık uygulama başlatıldığında bir kez oluşturulur ve uygulama kapanana kadar bu tek örnek kullanılır. Bu, paylaşılan kaynaklar ve veri tutarlılığı gerektiren durumlar için kullanışlıdır.
Kullanım Alanı: Uygulama boyunca sürekli aynı veriyi paylaşan servisler (örneğin, konfigürasyon ayarları veya cache mekanizmaları).
Örnek: Sistem genelinde kullanılan bir cache servisi.
➡️ Scoped (AddScoped):
🛠 Scoped yaşam döngüsü, bağımlılıkları her bir HTTP isteği için yeni bir nesne olarak oluşturur. Yani, bir HTTP isteği boyunca aynı nesne kullanılır, ancak farklı HTTP isteklerinde yeni nesneler yaratılır. Bu, web uygulamaları için idealdir çünkü her kullanıcı isteğinde izole servisler sağlar.
Kullanım Alanı: Kullanıcı isteklerine özel işlemler gerektiren servisler (örneğin, kullanıcı oturumu işlemleri).
Örnek: Bir kullanıcının oturum verisini işleyen bir servis
📚 KAYNAKLAR
Yiğit Özbek : https://lnkd.in/dc_7KPYD
Bora Kaşmer : https://lnkd.in/dsCQu-Pc
Gençay Yıldız : https://lnkd.in/dbnhTemz
🎬 VİDEO KAYNAKLAR
Yiğit Özbek : https://lnkd.in/d4W7bkii
Bora Kaşmer : https://lnkd.in/d_b9GFW9
Gençay Yıldız : https://lnkd.in/da_upxyz