.NET

Dependency Injection

Lifetime dei servizi (singleton, scoped, transient), registrazione dei servizi, IServiceProvider, best practice

24 domande da colloquio·
Mid-Level
1

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.

2

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.

3

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.

4

In quale caso conviene preferire AddSingleton rispetto a AddScoped?

5

Qual è il ruolo di IServiceProvider nel sistema di DI?

+21 domande da colloquio

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