Middle
A cosa servono i metodi di configurazione dei servizi in C#?
sobes.tech AI
Risposta dell'AI
Per registrare le dipendenze nel contenitore di Dependency Injection (DI). Questo permette all'infrastruttura dell'applicazione di gestire la creazione delle istanze dei servizi e di iniettarle dove necessario.
Obiettivi principali:
- Gestione del ciclo di vita: Definire il tempo di esistenza di un'istanza di servizio (Singleton, Scoped, Transient).
- Architettura disaccoppiata: Ridurre la dipendenza tra componenti usando astrazioni (interfacce).
- Testabilità: Facilitare la sostituzione delle implementazioni dei servizi per i test unitari.
- Configurabilità: Possibilità di sostituire un'implementazione con un'altra senza modificare il codice client.
Esempio di registrazione dei servizi in ASP.NET Core:
// Startup.cs o Program.cs in Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
// Registrazione di un servizio con ciclo di vita Singleton
services.AddSingleton<ISingletonService, SingletonService>();
// Registrazione di un servizio con ciclo di vita Scoped
services.AddScoped<IScopedService, ScopedService>();
// Registrazione di un servizio con ciclo di vita Transient
services.AddTransient<ITransientService, TransientService>();
// Registrazione di MVC e altri servizi standard
services.AddControllersWithViews();
}
Cicli di vita dei servizi:
| Ciclo di vita | Descrizione | Istanza in una singola richiesta (HTTP) |
|---|---|---|
| Singleton | Un'istanza per tutta la durata dell'applicazione. | Una |
| Scoped | Un'istanza durante la durata della richiesta (nel contesto HTTP). | Una |
| Transient | Una nuova istanza viene creata ad ogni richiesta di servizio. | Più (ad ogni iniezione) |