Sobes.tech
Middle

Pentru ce sunt folosite metodele de configurare a serviciilor în C#?

sobes.tech AI

Răspuns de la AI

Pentru a înregistra dependențele în containerul de injecție a dependențelor (Dependency Injection container). Acest lucru permite infrastructurii aplicației să gestioneze crearea instanțelor de servicii și să le injecteze acolo unde sunt necesare.

Obiective principale:

  • Gestionarea ciclului de viață: Determinarea duratei de existență a unei instanțe de serviciu (Singleton, Scoped, Transient).
  • Arhitectură decuplată: Reducerea dependenței între componente prin utilizarea abstracțiilor (interfețe).
  • Testabilitate: Înlocuirea ușoară a implementărilor serviciilor pentru testare unitară.
  • Configurabilitate: Posibilitatea de a înlocui o implementare cu alta fără a modifica codul client.

Exemplu de înregistrare a serviciilor în ASP.NET Core:

// Startup.cs sau Program.cs în Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
    // Înregistrarea unui serviciu cu ciclu de viață Singleton
    services.AddSingleton<ISingletonService, SingletonService>();

    // Înregistrarea unui serviciu cu ciclu de viață Scoped
    services.AddScoped<IScopedService, ScopedService>();

    // Înregistrarea unui serviciu cu ciclu de viață Transient
    services.AddTransient<ITransientService, TransientService>();

    // Înregistrarea MVC și a altor servicii standard
    services.AddControllersWithViews();
}

Ciclurile de viață ale serviciilor:

Ciclu de viață Descriere Instanțe în cadrul unei singure solicitări (HTTP)
Singleton O singură instanță pe durata întregii aplicații. Una
Scoped O instanță pe durata solicitării (în contextul HTTP). Una
Transient O nouă instanță este creată la fiecare solicitare de serviciu. Mai multe (la fiecare injecție)