
Dependency Injection
Service lifetimes (singleton, scoped, transient), service registration, IServiceProvider, best practices
1Quelle est la principale différence entre les lifetimes Singleton, Scoped et Transient ?
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é.
2Quel lifetime utiliser pour enregistrer un DbContext Entity Framework Core ?
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.
3Comment enregistrer un service avec une interface et son implémentation ?
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.
Dans quel cas privilégier AddSingleton plutôt que AddScoped ?
Quel est le rôle de IServiceProvider dans le système de DI ?
+21 questions d'entretien
Autres sujets d'entretien .NET
Les bases de C#
LINQ & Delegates
Essentiels du langage C#
Fondamentaux ASP.NET Core
Cycle de vie des requêtes ASP.NET Core
Configuration & Settings
Cycle de vie de l'application
Entity Framework Core
Minimal APIs
Développement Web API
Async côté ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Sérialisation JSON
Entity Framework Core avancé
Fonctionnalités avancées C#
Clean Architecture
Logging, Monitoring & Observability
Tests unitaires & xUnit
Tests d'intégration
Docker & Containerization
NuGet Package Management
Memory Management & GC
Programmation réactive
Async/await & Patterns
.NET Design Patterns
Optimisation des performances
Sécurité & Best Practices
SignalR & Real-time
Architecture Microservices
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