Tjänstlivslängd
När du registrerar en tjänst måste du välja en livslängd som matchar hur tjänsten används i appen. Livslängden påverkar hur tjänsten fungerar när den matas in i komponenter. Hittills har du registrerat tjänster med hjälp av AddSingleton metoden . Den här metoden registrerar en tjänst med en singleton-livslängd. Det finns tre inbyggda livslängder för tjänster i ASP.NET Core:
- Singleton
- Scoped
- Kortvarig
Livslängd för Singleton
Tjänster som registrerats med en singleton-livslängd skapas en gång när appen startas och återanvänds under appens livslängd. Den här livslängden är användbar för tjänster som är dyra att skapa eller som inte ändras ofta. Till exempel kan en tjänst som läser konfigurationsinställningar från en fil registreras som en singleton.
Använd AddSingleton metoden för att lägga till en singleton-tjänst i tjänstcontainern.
Begränsad livslängd
Tjänster som registrerats med en begränsad livslängd skapas en gång per konfigurerat omfång, vilket ASP.NET Core konfigurerar för varje begäran. En begränsad tjänst i ASP.NET Core skapas vanligtvis när en begäran tas emot och tas bort när begäran har slutförts. Den här livslängden är användbar för tjänster som har åtkomst till begärandespecifika data. Till exempel kan en tjänst som hämtar en kunds data från en databas registreras som en begränsad tjänst.
AddScoped Använd metoden för att lägga till en begränsad tjänst i tjänstcontainern.
Tillfällig livslängd
Tjänster som registrerats med en tillfällig livslängd skapas varje gång de begärs. Den här livslängden är användbar för lätta, tillståndslösa tjänster. Till exempel kan en tjänst som utför en specialiserad beräkning registreras som en tillfällig tjänst.
AddTransient Använd metoden för att lägga till en tillfällig tjänst i tjänstcontainern.
Tjänster som är beroende av andra tjänster
En tjänst kan vara beroende av andra tjänster, vanligtvis genom att dess beroenden matas in via konstruktorn. När du registrerar en tjänst som är beroende av en annan tjänst måste du ta hänsyn till tjänstens livslängd. Till exempel bör en singleton-tjänst inte vara beroende av en scoped tjänst eftersom den scoped tjänsten tas bort när begäran har slutförts, men en singleton finns kvar under hela appens livstid. Lyckligtvis söker ASP.NET Core som standard efter den här felkonfigurationen och rapporterar ett omfångsvalideringsfel när appen startas så att problemet snabbt kan identifieras och åtgärdas.