ASP.NET Core Dependency Injection Temelleri
Dependency Injection, modern ASP.NET Core uygulamalarının temel yapı taşlarından biridir. En basit anlatımıyla bir sınıfın ihtiyaç duyduğu bağımlılıkları kendi içinde üretmesi yerine dışarıdan alması anlamına gelir. Bu yaklaşım kodu daha test edilebilir, daha esnek ve daha sürdürülebilir hale getirir.
Bir controller içinde doğrudan DbContext, servis ya da yardımcı sınıf oluşturmak başlangıçta pratik görünebilir. Ancak proje büyüdükçe sınıflar birbirine sıkı şekilde bağlanır ve değişiklik yapmak zorlaşır. Dependency Injection ile sınıflar ihtiyaç duydukları servisleri constructor üzerinden alır ve bu servislerin nasıl oluşturulacağı uygulama başlangıcında tanımlanır.
ASP.NET Core tarafında servisler genellikle Program.cs içinde AddScoped, AddTransient veya AddSingleton ile kayıt edilir. Scoped servisler her HTTP isteği için bir kez oluşturulur ve DbContext gibi yapılar için yaygın olarak kullanılır. Transient servisler her ihtiyaçta yeniden üretilir. Singleton servisler ise uygulama boyunca tek örnek olarak yaşar.
Doğru servis ömrünü seçmek performans ve veri tutarlılığı açısından önemlidir. Örneğin DbContext Singleton olarak tanımlanırsa aynı context birden fazla istek tarafından paylaşılabilir ve ciddi hatalara yol açabilir. Bu nedenle uygulamanın ihtiyaçları iyi analiz edilmeli ve servis ömrü buna göre belirlenmelidir.
Dependency Injection sadece teknik bir kolaylık değil, aynı zamanda temiz mimarinin de önemli bir parçasıdır. Repository, service, email sender, file uploader veya slug generator gibi yapılar DI ile yönetildiğinde proje daha düzenli ve daha kolay genişletilebilir hale gelir.
0 Yorumlar