Sobes.tech
Middle

Na co se používají metody konfigurace služeb v C#?

sobes.tech AI

Odpověď od AI

Pro registraci závislostí v kontejneru pro vkládání závislostí (Dependency Injection container). To umožňuje infrastruktuře aplikace řídit tvorbu instancí služeb a jejich vkládání tam, kde jsou potřeba.

Hlavní cíle:

  • Správa životního cyklu: Určení doby existence instance služby (Singleton, Scoped, Transient).
  • Oddělená architektura: Snížení závislosti mezi komponentami pomocí abstrakcí (rozhraní).
  • Testovatelnost: Snadná výměna implementací služeb pro jednotkové testy.
  • Konfigurovatelnost: Možnost výměny jedné implementace za jinou bez změny klientského kódu.

Příklad registrace služeb v ASP.NET Core:

// Startup.cs nebo Program.cs v Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
    // Registrace služby s životním cyklem Singleton
    services.AddSingleton<ISingletonService, SingletonService>();

    // Registrace služby s životním cyklem Scoped
    services.AddScoped<IScopedService, ScopedService>();

    // Registrace služby s životním cyklem Transient
    services.AddTransient<ITransientService, TransientService>();

    // Registrace MVC a dalších standardních služeb
    services.AddControllersWithViews();
}

Životní cykly služeb:

Životní cyklus Popis Případy v rámci jednoho požadavku (HTTP)
Singleton Jeden exemplář po celou dobu běhu aplikace. Jeden
Scoped Jeden exemplář po dobu požadavku (v HTTP kontextu). Jeden
Transient Nový exemplář je vytvořen při každém požadavku služby. Více (při každé injekci)