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 სერვისებისთვის, სადაც საჭიროა ახალი ეგზემპლარი ყოველი მოთხოვნისას.