.NET

Dependency Injection

Service-lifetimes (singleton, scoped, transient), serviceregistratie, IServiceProvider, best practices

24 gespreksvragen·
Mid-Level
1

Wat is het belangrijkste verschil tussen de lifetimes Singleton, Scoped en Transient?

Antwoord

Singleton maakt één enkele instantie voor de hele applicatielevensduur, Scoped maakt één instantie per HTTP-verzoek (of scope), en Transient maakt elke keer dat het wordt geïnjecteerd een nieuwe instantie. Deze lifetimes bepalen wanneer en hoe vaak de DI-container een service instantieert. Gebruik Singleton voor stateless gedeelde services, Scoped voor request-gebonden services (zoals DbContext) en Transient voor lichtgewicht stateless services.

2

Welke lifetime moet worden gebruikt om een Entity Framework Core DbContext te registreren?

Antwoord

DbContext moet worden geregistreerd met de Scoped lifetime omdat het niet thread-safe is en een trackingstatus van entiteiten bijhoudt. Elk HTTP-verzoek moet zijn eigen DbContext-instantie hebben om concurrentieproblemen te voorkomen. De registratie gebeurt met AddDbContext, dat automatisch de Scoped lifetime configureert. Singleton gebruiken zou concurrentiefouten veroorzaken en Transient zou bronnen verspillen door te veel instanties te maken.

3

Hoe registreer je een service met een interface en de implementatie ervan?

Antwoord

De registratie van een service gebeurt met de methoden AddSingleton, AddScoped of AddTransient, waarbij de interface als servicetype en de concrete klasse als implementatie wordt opgegeven. De syntaxis is services.Add{Lifetime}<IInterface, Implementation>(). Deze aanpak respecteert het dependency inversion-principe en vergemakkelijkt het testen door het vervangen van implementaties mogelijk te maken. De DI-container lost de concrete implementatie automatisch op bij het injecteren van de interface.

4

Wanneer verdient AddSingleton de voorkeur boven AddScoped?

5

Wat is de rol van IServiceProvider in het DI-systeem?

+21 gespreksvragen

Beheers .NET voor je volgende gesprek

Krijg toegang tot alle vragen, flashcards, technische tests, code review-oefeningen en gespreksimulatoren.

Begin gratis