Sobes.tech
Junior — Middle

Qual è la differenza tra l'ambito degli oggetti Scoped e Transient nel contesto dell'iniezione delle dipendenze?

sobes.tech AI

Risposta dell'AI

Nel contesto dell'Iniezione delle Dipendenze in C#, gli ambiti Scoped e Transient determinano il tempo di vita degli oggetti creati:

  • Transient: l'oggetto viene creato ogni volta che viene richiesto. Ciò significa che ad ogni chiamata del servizio o iniezione verrà creata una nuova istanza.

  • Scoped: l'oggetto viene creato una sola volta durante il periodo di una richiesta (scope). Nelle applicazioni web, questo di solito significa che durante una singola richiesta HTTP verrà utilizzata la stessa istanza, ma per un'altra richiesta verrà creata una nuova istanza.

Esempio:

services.AddTransient<IMyService, MyService>(); // nuovo oggetto ad ogni richiesta
services.AddScoped<IMyService, MyService>();   // un oggetto per richiesta HTTP

Pertanto, Scoped è utile per conservare lo stato all'interno di una singola richiesta, mentre Transient è adatto per servizi stateless, dove è necessaria una nuova istanza ogni volta.