Sobes.tech
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)