Sobes.tech
Junior — Middle

Kuo skiriasi Scoped ir Transient objektų matomumo sritis Dependency Injection kontekste?

sobes.tech AI

Atsakymas iš AI

Kontekste, susijusioje su Dependency Injection C# kalboje, Scoped ir Transient sritys apibrėžia kuriamą objektų gyvavimo laiką:

  • Transient: objektas sukuriamas kiekvieną kartą, kai jo prašoma. Tai reiškia, kad kiekvieno paslaugos ar injekcijos iškvietimo metu bus sukurtas naujas egzempliorius.

  • Scoped: objektas sukuriamas vieną kartą per užklausą (scope). Internetinėse programose tai dažniausiai reiškia, kad per vieną HTTP užklausą naudojamas tas pats egzempliorius, bet kitai užklausai sukuriamas naujas.

Pavyzdys:

services.AddTransient<IMyService, MyService>(); // naujas objektas kiekvienai užklausai
services.AddScoped<IMyService, MyService>();   // vienas objektas per HTTP užklausą

Taigi, Scoped yra patogu išlaikyti būseną per vieną užklausą, o Transient — stateless paslaugoms, kur reikalingas naujas egzempliorius kiekvieną kartą.