.NET

Dependency Injection

Service-Lifetimes (singleton, scoped, transient), Service-Registrierung, IServiceProvider, Best Practices

24 Interview-Fragen·
Mid-Level
1

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.

2

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.

3

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.

4

Wann sollte AddSingleton gegenüber AddScoped bevorzugt werden?

5

Welche Rolle spielt IServiceProvider im DI-System?

+21 Interview-Fragen

Meistere .NET für dein nächstes Interview

Zugang zu allen Fragen, Flashcards, technischen Tests, Code-Review-Übungen und Interview-Simulatoren.

Kostenlos starten