Sobes.tech
Middle

Mit szolgálnak a C#-ban a szolgáltatások konfigurációs módszerei?

sobes.tech MI

Válasz az MI-től

A függőségek regisztrálása a Dependency Injection konténerben. Ez lehetővé teszi az alkalmazás infrastruktúrája számára, hogy kezelje a szolgáltatási példányok létrehozását és azok injektálását oda, ahol szükséges.

Fő célok:

  • Életciklus kezelése: A szolgáltatás példányának létezési idejének meghatározása (Singleton, Scoped, Transient).
  • Leválasztott architektúra: A komponensek közötti függőség csökkentése absztrakciók (interfészek) használatával.
  • Tesztelhetőség: A szolgáltatások implementációinak könnyű cseréje egységtesztekhez.
  • Konfigurálhatóság: Lehetőség egy implementáció másikra való cseréjére anélkül, hogy a klienskódot módosítanánk.

Példa a szolgáltatások regisztrálására ASP.NET Core-ban:

// Startup.cs vagy Program.cs a Minimal API-kban
public void ConfigureServices(IServiceCollection services)
{
    // Singleton életciklussal rendelkező szolgáltatás regisztrálása
    services.AddSingleton<ISingletonService, SingletonService>();

    // Scoped életciklussal rendelkező szolgáltatás regisztrálása
    services.AddScoped<IScopedService, ScopedService>();

    // Transient életciklussal rendelkező szolgáltatás regisztrálása
    services.AddTransient<ITransientService, TransientService>();

    // MVC és más standard szolgáltatások regisztrálása
    services.AddControllersWithViews();
}

Szolgáltatások életciklusai:

Életciklus Leírás Egy kérés (HTTP) keretében példányok
Singleton Egy példány az alkalmazás teljes életében. Egy
Scoped Egy példány a kérés életében (HTTP kontextusban). Egy
Transient Minden kérésnél új példány jön létre. Több (minden injektálásnál)