Middle
Waarvoor worden de configuratiemethoden voor services in C# gebruikt?
sobes.tech AI
Antwoord van AI
Om afhankelijkheden te registreren in de Dependency Injection-container. Dit stelt de infrastructuur van de applicatie in staat om de creatie van service-voorbeelden te beheren en ze daar te injecteren waar nodig.
Belangrijkste doelen:
- Levenscyclusbeheer: Bepalen hoe lang een service-voorbeeld bestaat (Singleton, Scoped, Transient).
- Ontkoppelde architectuur: Verminderen van afhankelijkheid tussen componenten door gebruik te maken van abstracties (interfaces).
- Testbaarheid: Eenvoudig vervangen van service-implementaties voor unit tests.
- Configureerbaarheid: Mogelijkheid om één implementatie te vervangen door een andere zonder de client-code te wijzigen.
Voorbeeld van het registreren van services in ASP.NET Core:
// Startup.cs of Program.cs in Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
// Registratie van een service met Singleton levenscyclus
services.AddSingleton<ISingletonService, SingletonService>();
// Registratie van een service met Scoped levenscyclus
services.AddScoped<IScopedService, ScopedService>();
// Registratie van een service met Transient levenscyclus
services.AddTransient<ITransientService, TransientService>();
// Registratie van MVC en andere standaarddiensten
services.AddControllersWithViews();
}
Levenscycli van services:
| Levenscyclus | Beschrijving | Voorbeelden binnen één HTTP-verzoek |
|---|---|---|
| Singleton | Één instantie gedurende de hele levensduur van de applicatie. | Eén |
| Scoped | Één instantie gedurende de levensduur van het verzoek (in HTTP-context). | Eén |
| Transient | Een nieuwe instantie wordt bij elk serviceverzoek gemaakt. | Meerdere (bij elke injectie) |