Kokie objektų gyvavimo ciklų tipai egzistuoja IoC konteineryje ir kaip jie taikomi?
sobes.tech AI
Atsakymas iš AI
IoC (Inversion of Control) konteineriuose paprastai naudojami šie objektų gyvavimo ciklo tipai:
-
Transient (Laikinas) — kiekvieną kartą, kai yra prašymas, konteineris sukuria naują objekto egzempliorių. Naudojama, kai kiekvienai operacijai reikalingas naujas objektas.
-
Singleton (Vienintelis) — konteineris sukuria objekto egzempliorių pirmojo prašymo metu ir jį grąžina visuose vėlesniuose prašymuose. Tinka paslaugoms su būsenomis ar ištekliais, kurie turi būti unikalūs.
-
Scoped (Apribotas) — objektas sukuriamas vieną kartą tam tikram scope (pavyzdžiui, kiekvieno prašymo web programoje) ir naudojamas šio scope ribose. Pasibaigus scope, objektas sunaikinamas.
Pavyzdys C# naudojant Microsoft.Extensions.DependencyInjection:
services.AddTransient<IService, Service>(); // naujas objektas kiekvieną kartą
services.AddSingleton<IService, Service>(); // vienas objektas viso programos gyvavimo metu
services.AddScoped<IService, Service>(); // vienas objektas kiekvieno HTTP prašymo metu
Pasirinkimas priklauso nuo objekto būsenos reikalavimų ir programos našumo.