Sobes.tech
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 кызматтар үчүн, ар жолу жаңы үлгү керек болсо колдонулат.