Sobes.tech
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)