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