Sobes.tech
Junior — Middle

ԻոՍԿ կոնտեյներում օբյեկտների կյանքի տարբեր տեսակներ կան և ինչպես են դրանք կիրառվում:

sobes.tech AI

Պատասխան AI-ից

IoC (Inversion of Control) կոնտեյներներում սովորաբար օգտագործվում են հետևյալ օբյեկտների կյանքի ցիկլի տեսակները՝

  1. Transient (Տեղեկատվական) — յուրաքանչյուր պահանջի դեպքում կոնտեյները ստեղծում է նոր օբյեկտի օրինակ։ Օգտագործվում է, երբ անհրաժեշտ է յուրաքանչյուր գործողության համար նոր օբյեկտ։

  2. Singleton (Միայնակ) — կոնտեյները առաջին պահանջի ժամանակ ստեղծում է օբյեկտի օրինակ և այն վերադարձնում բոլոր հաջորդ պահանջների համար։ Համապատասխանում է այն ծառայություններին, որոնց վիճակը կամ ռեսուրսները պետք է լինեն յուրահատուկ։

  3. Scoped (Համապատասխան) — օբյեկտը ստեղծվում է մեկ անգամ սահմանված scope-ի համար (օրինակ՝ վեբ հավելվածում յուրաքանչյուր պահանջի համար) և օգտագործվում է այդ scope-ի շրջանակում։ Scope-ի ավարտից հետո օբյեկտը ոչնչացվում է։

Օրինակ C#-ում՝ օգտագործելով Microsoft.Extensions.DependencyInjection.

services.AddTransient<IService, Service>(); // նոր օբյեկտ յուրաքանչյուր պահանջի համար
services.AddSingleton<IService, Service>(); // մեկ օբյեկտ ամբողջ հավելվածի կյանքի ընթացքում
services.AddScoped<IService, Service>(); // մեկ օբյեկտ յուրաքանչյուր HTTP պահանջի համար

Ընտրությունը կախված է օբյեկտի վիճակի պահանջներից և հավելվածի կատարողականությունից։