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