Sobes.tech
Junior — Middle

Ի՞նչ է տարբերությունը Scoped և Transient օբյեկտների տեսանելիության ոլորտների միջև Dependency Injection-ի կոնտեքստում։

sobes.tech AI

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

C#-ի Dependency Injection կոնտեքստում, Scoped և Transient ոլորտները որոշում են ստեղծված օբյեկտների կյանքի ժամանակը՝

  • Transient: օբյեկտը ստեղծվում է ամեն անգամ, երբ այն պահանջվում է։ Դա նշանակում է, որ յուրաքանչյուր ծառայության կամ ինժեկցիայի կանչի ժամանակ կստեղծվի նոր օրինակ:

  • Scoped: օբյեկտը ստեղծվում է մեկ անգամ՝ մեկ հարցում (scope) ժամանակ։ Վեբ հավելվածներում դա սովորաբար նշանակում է, որ նույն HTTP հարցումի ընթացքում օգտագործվում է նույն օրինակը, բայց այլ հարցում համար՝ նոր:

Օրինակ՝

services.AddTransient<IMyService, MyService>(); // նոր օբյեկտ յուրաքանչյուր հարցում
services.AddScoped<IMyService, MyService>();   // մեկ օբյեկտ HTTP հարցում

Այսպիսով, Scoped-ը հարմար է վիճակի պահպանում համար մեկ հարցում, իսկ Transient-ը՝ stateless ծառայությունների համար, որտեղ անհրաժեշտ է նոր օրինակ ամեն անգամ։