Sobes.tech
Middle

Na čo sa používajú metódy konfigurácie služieb v C#?

sobes.tech AI

Odpoveď od AI

Na registráciu závislostí v kontajneri na vkladanie závislostí (Dependency Injection container). To umožňuje infraštruktúre aplikácie spravovať tvorbu inštancií služieb a ich vkladanie tam, kde sú potrebné.

Hlavné ciele:

  • Správa životného cyklu: Určenie doby existencie inštancie služby (Singleton, Scoped, Transient).
  • Oddelená architektúra: Zníženie závislosti medzi komponentmi pomocou abstrakcií (rozhraní).
  • Testovateľnosť: Jednoduchá výmena implementácií služieb pre jednotkové testy.
  • Konfigurovateľnosť: Možnosť výmeny jednej implementácie za inú bez zmeny klientského kódu.

Príklad registrácie služieb v ASP.NET Core:

// Startup.cs alebo Program.cs v Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
    // Registrácia služby s životným cyklom Singleton
    services.AddSingleton<ISingletonService, SingletonService>();

    // Registrácia služby s životným cyklom Scoped
    services.AddScoped<IScopedService, ScopedService>();

    // Registrácia služby s životným cyklom Transient
    services.AddTransient<ITransientService, TransientService>();

    // Registrácia MVC a iných štandardných služieb
    services.AddControllersWithViews();
}

Životné cykly služieb:

Životný cyklus Popis Príklady v rámci jednej požiadavky (HTTP)
Singleton Jeden príklad počas celej doby behu aplikácie. Jeden
Scoped Jeden príklad počas doby požiadavky (v HTTP kontexte). Jeden
Transient Nový príklad sa vytvára pri každej požiadavke služby. Viac (pri každom vkladaní)