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ą.