.NET

Dependency Injection

Service lifetimes (singleton, scoped, transient), service registration, IServiceProvider, best practices

24 questions d'entretien·
Confirmé
1

Quelle est la principale différence entre les lifetimes Singleton, Scoped et Transient ?

Réponse

Singleton crée une seule instance pour toute la durée de vie de l'application, Scoped crée une instance par requête HTTP (ou scope), et Transient crée une nouvelle instance à chaque injection. Ces lifetimes déterminent quand et combien de fois le conteneur DI instancie un service. Utiliser Singleton pour des services sans état partagés, Scoped pour des services liés à une requête (comme DbContext), et Transient pour des services légers sans état partagé.

2

Quel lifetime utiliser pour enregistrer un DbContext Entity Framework Core ?

Réponse

DbContext doit être enregistré avec un lifetime Scoped car il n'est pas thread-safe et maintient un état de tracking des entités. Chaque requête HTTP doit avoir sa propre instance de DbContext pour éviter les problèmes de concurrence. L'enregistrement se fait avec AddDbContext qui configure automatiquement le lifetime Scoped. Utiliser Singleton causerait des erreurs de concurrence, et Transient gaspillerait des ressources en créant trop d'instances.

3

Comment enregistrer un service avec une interface et son implémentation ?

Réponse

L'enregistrement d'un service se fait avec les méthodes AddSingleton, AddScoped ou AddTransient en spécifiant l'interface comme type de service et la classe concrète comme implémentation. La syntaxe est services.Add{Lifetime}<IInterface, Implementation>(). Cette approche permet de respecter le principe de dépendance par abstraction et facilite les tests en permettant de substituer des implémentations. Le conteneur DI résoudra automatiquement l'implémentation concrète lors de l'injection de l'interface.

4

Dans quel cas privilégier AddSingleton plutôt que AddScoped ?

5

Quel est le rôle de IServiceProvider dans le système de DI ?

+21 questions d'entretien

Maîtrise .NET pour ton prochain entretien

Accède à toutes les questions, flashcards, tests techniques, exercices de code review et simulateurs d'entretien.

Commencer gratuitement