
Dependency Injection
Servis lifetime'ları (singleton, scoped, transient), servis kaydı, IServiceProvider, en iyi uygulamalar
1Singleton, Scoped ve Transient lifetime'ları arasındaki temel fark nedir?
Singleton, Scoped ve Transient lifetime'ları arasındaki temel fark nedir?
Cevap
Singleton tüm uygulama lifetime'ı için tek bir instance oluşturur, Scoped her HTTP isteği (veya scope) başına bir instance oluşturur ve Transient her enjekte edildiğinde yeni bir instance oluşturur. Bu lifetime'lar, DI container'ının bir servisi ne zaman ve kaç kez örnekleyeceğini belirler. Durumsuz paylaşılan servisler için Singleton, isteğe bağlı servisler (DbContext gibi) için Scoped ve durumsuz hafif servisler için Transient kullanın.
2Bir Entity Framework Core DbContext kaydetmek için hangi lifetime kullanılmalıdır?
Bir Entity Framework Core DbContext kaydetmek için hangi lifetime kullanılmalıdır?
Cevap
DbContext, thread-safe olmadığı ve entity tracking durumunu koruduğu için Scoped lifetime ile kaydedilmelidir. Eşzamanlılık sorunlarını önlemek için her HTTP isteğinin kendi DbContext örneği olmalıdır. Kayıt, Scoped lifetime'ı otomatik olarak yapılandıran AddDbContext ile yapılır. Singleton kullanmak eşzamanlılık hatalarına neden olur ve Transient çok fazla örnek oluşturarak kaynakları israf eder.
3Bir servisi bir interface ve onun implementasyonu ile nasıl kaydedersiniz?
Bir servisi bir interface ve onun implementasyonu ile nasıl kaydedersiniz?
Cevap
Servis kaydı, interface'i servis türü ve somut sınıfı implementasyon olarak belirterek AddSingleton, AddScoped veya AddTransient metotlarıyla yapılır. Söz dizimi services.Add{Lifetime}<IInterface, Implementation>() şeklindedir. Bu yaklaşım bağımlılığın tersine çevrilmesi ilkesine uyar ve implementasyonların değiştirilmesine olanak tanıyarak testi kolaylaştırır. DI kapsayıcısı, interface enjekte edilirken somut implementasyonu otomatik olarak çözer.
AddScoped yerine AddSingleton ne zaman tercih edilmelidir?
DI sisteminde IServiceProvider'ın rolü nedir?
+21 mülakat soruları
Diğer .NET mülakat konuları
C# Temelleri
LINQ & Delegates
C# Dil Temelleri
ASP.NET Core Temelleri
ASP.NET Core İstek Yaşam Döngüsü
Configuration & Settings
Uygulama Yaşam Döngüsü
Entity Framework Core
Minimal APIs
Web API Geliştirme
ASP.NET Core'da Async
Authentication & Authorization
HttpClient & Networking
JSON Serileştirme
Entity Framework Core İleri Düzey
C# Gelişmiş Özellikleri
Clean Architecture
Logging, Monitoring & Observability
Birim Testleri & xUnit
Entegrasyon Testleri
Docker & Containerization
NuGet Paket Yönetimi
Memory Management & GC
Reaktif programlama
Async/await & Desenler
.NET Tasarım Desenleri
Performans Optimizasyonu
Güvenlik ve Best Practices
SignalR ve Gerçek Zamanlı
Microservices Mimarisi
Bir sonraki mülakatın için .NET'de uzmanlaş
Tüm sorulara, flashcards'a, teknik testlere, code review alıştırmalarına ve mülakat simülatörlerine eriş.
Ücretsiz başla