Junior — Middle
Dependency Injection контекстинде Scoped жана Transient объекттеринин көрүнүш чөйрөсүнүн айырмасы эмнеде?
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 кызматтар үчүн, ар жолу жаңы үлгү керек болсо колдонулат.