Durate del servizio
Quando si registra un servizio, è necessario scegliere una durata corrispondente alla modalità di utilizzo del servizio nell'app. La durata influisce sul comportamento del servizio quando viene inserito nei componenti. Finora sono stati registrati i servizi usando il metodo AddSingleton. Questo metodo registra un servizio con una durata Singleton. Sono disponibili tre durate predefinite per i servizi in ASP.NET Core:
- Singleton
- Con ambito
- Temporaneo
Durata Singleton
I servizi registrati con una durata Singleton vengono creati una volta all'avvio dell'app e riutilizzati per tutta la durata dell'app. Questa durata è utile per i servizi costosi da creare o che non cambiano spesso. Ad esempio, un servizio che legge le impostazioni di configurazione da un file può essere registrato come Singleton.
Usare il metodo AddSingleton per aggiungere un servizio Singleton al contenitore del servizio.
Durata Con ambito
I servizi registrati con una durata Con ambito vengono creati una volta per ogni ambito configurato, che ASP.NET Core configura per ogni richiesta. Un servizio Con ambito in ASP.NET Core viene in genere creato quando si riceve una richiesta ed eliminato al termine della richiesta. Questa durata è utile per i servizi che accedono ai dati specifici della richiesta. Ad esempio, è possibile registrare un servizio che recupera i dati di un cliente da un database come servizio Con ambito.
Usare il metodo AddScoped per aggiungere un servizio Con ambito al contenitore del servizio.
Durata Temporaneo
I servizi registrati con una durata Temporaneo vengono creati ogni volta che vengono richiesti. Questa durata è utile per i servizi leggeri senza stato. Ad esempio, un servizio che esegue un calcolo specializzato può essere registrato come servizio Temporaneo.
Usare il metodo AddTransient per aggiungere un servizio Temporaneo al contenitore del servizio.
Servizi che dipendono da altri servizi
Un servizio può dipendere da altri servizi, in genere tramite l'inserimento delle relative dipendenze attraverso il relativo costruttore. Quando si registra un servizio che dipende da un altro servizio, è necessario tenere conto della durata del servizio. Ad esempio, un servizio Singleton non deve dipendere da un servizio Con ambito perché quest'ultimo viene eliminato quando la richiesta viene completata, mentre un Singleton prosegue per tutta la durata dell'app. Fortunatamente, ASP.NET Core verificherà per impostazione predefinita la presenza di questa configurazione errata e segnalerà un errore di convalida dell'ambito all'avvio dell'app, in modo che si possa identificare e risolvere rapidamente il problema.