Millised on IoC konteineri objektide elutsüklitüübid ja kuidas neid rakendatakse?
sobes.tech AI
Vastus AI-lt
IoC (Inversion of Control) konteinerites parasti izmantot šādus objektu dzīves cikla tipus:
-
Transient (Pārejošs) — katru reizi, kad tiek veikts pieprasījums, konteineris izveido jaunu objekta eksemplāru. To izmanto, ja katrai operācijai nepieciešams jauns objekts.
-
Singleton (Vienots) — konteineris izveido objekta eksemplāru pirmajā pieprasījumā un to atgriež visos turpmākajos pieprasījumos. Piemērots pakalpojumiem ar stāvokli vai resursiem, kas jābūt unikāliem.
-
Scoped (Lauka) — objekts tiek izveidots vienu reizi noteiktā scope (piemēram, katra pieprasījuma laikā web lietojumprogrammā) un tiek izmantots šī scope ietvaros. Pēc scope beigām objekts tiek iznīcināts.
Piemērs C# ar Microsoft.Extensions.DependencyInjection:
services.AddTransient<IService, Service>(); // jauns objekts katru reizi
services.AddSingleton<IService, Service>(); // viens objekts visa lietojumprogrammas dzīves laikā
services.AddScoped<IService, Service>(); // viens objekts katram HTTP pieprasījumam
Objektu dzīves cikla izvēle ir atkarīga no objekta stāvokļa prasībām un lietojumprogrammas veiktspējas.