Sobes.tech
Junior — Middle

Kādi ir objektu dzīves cikla veidi IoC konteinerā un kā tie tiek piemēroti?

sobes.tech AI

Atbilde no AI

IoC (Inversion of Control) konteineros parasti naudojami šie objektų gyvavimo ciklo tipai:

  1. Transient (Laikinas) — kiekvieną kartą, kai yra prašymas, konteineris sukuria naują objekto egzempliorių. Naudojama, kai kiekvienai operacijai reikalingas naujas objektas.

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

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