Sobes.tech
Junior — Middle

Ce tipuri de cicluri de viață ale obiectelor există în containerul IoC și cum sunt aplicate?

sobes.tech AI

Răspuns de la AI

În containerele IoC (Inversiunea Controlului), de obicei, se utilizează următoarele tipuri de cicluri de viață ale obiectelor:

  1. Transient (Timp de viață temporar) — de fiecare dată când se face o solicitare, containerul creează o nouă instanță a obiectului. Se folosește atunci când este nevoie de un obiect nou pentru fiecare operație.

  2. Singleton (Singur) — containerul creează o instanță a obiectului la prima solicitare și o returnează pentru toate solicitările ulterioare. Potrivit pentru servicii cu stare sau resurse care trebuie să fie unice.

  3. Scoped (Cu scop definit) — obiectul este creat o dată pentru un anumit scop (de exemplu, pentru o solicitare într-o aplicație web) și reutilizat în cadrul acestui scop. După încheierea scopului, obiectul este distrus.

Exemplu în C# folosind Microsoft.Extensions.DependencyInjection:

services.AddTransient<IService, Service>(); // obiect nou de fiecare dată
services.AddSingleton<IService, Service>(); // un obiect pe întreaga durată de viață a aplicației
services.AddScoped<IService, Service>(); // un obiect pentru fiecare solicitare HTTP

Alegerea ciclului de viață depinde de cerințele legate de starea obiectului și de performanța aplicației.