
Dependency Injection
Lifetime dei servizi (singleton, scoped, transient), registrazione dei servizi, IServiceProvider, best practice
1Qual è la differenza principale tra i lifetime Singleton, Scoped e Transient?
Qual è la differenza principale tra i lifetime Singleton, Scoped e Transient?
Risposta
Singleton crea una singola istanza per l'intero lifetime dell'applicazione, Scoped crea un'istanza per richiesta HTTP (o scope) e Transient crea una nuova istanza ogni volta che viene iniettato. Questi lifetime determinano quando e quante volte il container DI istanzia un servizio. Usa Singleton per servizi stateless condivisi, Scoped per servizi legati a una richiesta (come DbContext) e Transient per servizi leggeri stateless.
2Quale lifetime usare per registrare un DbContext di Entity Framework Core?
Quale lifetime usare per registrare un DbContext di Entity Framework Core?
Risposta
Il DbContext deve essere registrato con lifetime Scoped perché non è thread-safe e mantiene uno stato di tracking delle entità. Ogni richiesta HTTP deve avere la propria istanza di DbContext per evitare problemi di concorrenza. La registrazione avviene con AddDbContext, che configura automaticamente il lifetime Scoped. Usare Singleton causerebbe errori di concorrenza e Transient sprecherebbe risorse creando troppe istanze.
3Come registrare un servizio con un'interface e la sua implementazione?
Come registrare un servizio con un'interface e la sua implementazione?
Risposta
La registrazione di un servizio avviene con i metodi AddSingleton, AddScoped o AddTransient, specificando l'interface come tipo di servizio e la classe concreta come implementazione. La sintassi è services.Add{Lifetime}<IInterface, Implementation>(). Questo approccio rispetta il principio di inversione delle dipendenze e facilita i test consentendo la sostituzione delle implementazioni. Il container DI risolverà automaticamente l'implementazione concreta durante l'iniezione dell'interface.
In quale caso conviene preferire AddSingleton rispetto a AddScoped?
Qual è il ruolo di IServiceProvider nel sistema di DI?
+21 domande da colloquio
Altri argomenti di colloquio .NET
Fondamenti di C#
LINQ & Delegates
Fondamenti del linguaggio C#
Fondamenti di ASP.NET Core
Ciclo di vita delle richieste in ASP.NET Core
Configuration & Settings
Ciclo di vita dell'applicazione
Entity Framework Core
Minimal APIs
Sviluppo di Web API
Async in ASP.NET Core
Authentication & Authorization
HttpClient & Networking
Serializzazione JSON
Entity Framework Core avanzato
Funzionalità avanzate di C#
Clean Architecture
Logging, Monitoring & Observability
Test unitari & xUnit
Test di integrazione
Docker & Containerization
Gestione dei pacchetti NuGet
Memory Management & GC
Programmazione reattiva
Async/await & Pattern
.NET Design Patterns
Ottimizzazione delle prestazioni
Sicurezza e Best Practices
SignalR e tempo reale
Architettura a Microservizi
Padroneggia .NET per il tuo prossimo colloquio
Accedi a tutte le domande, flashcards, test tecnici, esercizi di code review e simulatori di colloquio.
Inizia gratis