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