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) |