Sobes.tech
Junior — Middle

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:

  1. 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.

  2. 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.

  3. 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.