
Dependency Injection
Service-Lifetimes (singleton, scoped, transient), Service-Registrierung, IServiceProvider, Best Practices
1Was ist der Hauptunterschied zwischen den Lifetimes Singleton, Scoped und Transient?
Was ist der Hauptunterschied zwischen den Lifetimes Singleton, Scoped und Transient?
Antwort
Singleton erstellt eine einzige Instanz für die gesamte Anwendungslebensdauer, Scoped erstellt eine Instanz pro HTTP-Anfrage (oder Scope), und Transient erstellt bei jeder Injektion eine neue Instanz. Diese Lifetimes bestimmen, wann und wie oft der DI-Container einen Service instanziiert. Verwende Singleton für zustandslose gemeinsam genutzte Services, Scoped für anfragegebundene Services (wie DbContext) und Transient für leichtgewichtige zustandslose Services.
2Welches Lifetime sollte zum Registrieren eines Entity Framework Core DbContext verwendet werden?
Welches Lifetime sollte zum Registrieren eines Entity Framework Core DbContext verwendet werden?
Antwort
Ein DbContext sollte mit Scoped Lifetime registriert werden, da er nicht thread-safe ist und einen Tracking-Zustand der Entitäten beibehält. Jede HTTP-Anfrage sollte ihre eigene DbContext-Instanz haben, um Parallelitätsprobleme zu vermeiden. Die Registrierung erfolgt mit AddDbContext, das automatisch das Scoped Lifetime konfiguriert. Singleton würde Parallelitätsfehler verursachen, und Transient würde Ressourcen verschwenden, indem zu viele Instanzen erstellt werden.
3Wie registriert man einen Service mit einem interface und seiner Implementierung?
Wie registriert man einen Service mit einem interface und seiner Implementierung?
Antwort
Die Registrierung eines Service erfolgt mit den Methoden AddSingleton, AddScoped oder AddTransient, indem das interface als Servicetyp und die konkrete Klasse als Implementierung angegeben wird. Die Syntax lautet services.Add{Lifetime}<IInterface, Implementation>(). Dieser Ansatz wahrt das Dependency-Inversion-Prinzip und erleichtert das Testen, indem das Austauschen von Implementierungen ermöglicht wird. Der DI-Container löst die konkrete Implementierung beim Injizieren des interface automatisch auf.
Wann sollte AddSingleton gegenüber AddScoped bevorzugt werden?
Welche Rolle spielt IServiceProvider im DI-System?
+21 Interview-Fragen
Weitere .NET-Interviewthemen
C#-Grundlagen
LINQ & Delegates
C#-Sprachgrundlagen
ASP.NET Core Grundlagen
ASP.NET Core Request-Lebenszyklus
Configuration & Settings
Anwendungslebenszyklus
Entity Framework Core
Minimal APIs
Web-API-Entwicklung
Async in ASP.NET Core
Authentication & Authorization
HttpClient & Networking
JSON-Serialisierung
Entity Framework Core fortgeschritten
Erweiterte C#-Funktionen
Clean Architecture
Logging, Monitoring & Observability
Unit-Tests & xUnit
Integrationstests
Docker & Containerization
NuGet Package Management
Memory Management & GC
Reaktive Programmierung
Async/await & Patterns
.NET Design Patterns
Performance-Optimierung
Sicherheit & Best Practices
SignalR & Echtzeit
Microservices-Architektur
Meistere .NET für dein nächstes Interview
Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.
Kostenlos starten