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