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 ծառայությունների համար, որտեղ անհրաժեշտ է նոր օրինակ ամեն անգամ։