Sobes.tech
Junior — Middle

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:

  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.