IoC კონტეინერში ობიექტების სიცოცხლის ციკლის რა ტიპები არსებობს და როგორ გამოიყენება ისინი?
sobes.tech AI
პასუხი AI-სგან
IoC (Inversion of Control) კონტეინერებში ჩვეულებრივ გამოიყენება შემდეგი ტიპის ობიექტების სიცოცხლის ციკლი:
-
Transient (გადამწყვეტი) — ყოველი მოთხოვნის დროს კონტეინერი ქმნის ახალი ობიექტის ნიმუშს. გამოიყენება, როდესაც თითო ოპერაციისთვის საჭიროა ახალი ობიექტი.
-
Singleton (ერთიანი) — კონტეინერი ქმნის ობიექტის ნიმუშს პირველ მოთხოვნაზე და აბრუნებს მას ყველა შემდგომ მოთხოვნაზე. შესაფერისია სერვისებისთვის, რომლებსაც უნდა ჰქონდეთ სტატუსი ან რესურსები, რომლებიც უნდა იყოს უნიკალური.
-
Scoped (საზღვრული) — ობიექტი ქმნება ერთხელ განსაზღვრულ scope-ისთვის (მაგალითად, ვებ-აპლიკაციაში თითო მოთხოვნისთვის) და გამოიყენება ამ scope-ის ფარგლებში. Scope-ის დასრულების შემდეგ, ობიექტი განადგურდება.
C#-ში გამოყენებით Microsoft.Extensions.DependencyInjection-ის:
services.AddTransient<IService, Service>(); // ახალი ობიექტი ყოველი მოთხოვნის დროს
services.AddSingleton<IService, Service>(); // ერთი ობიექტი მთელი აპლიკაციის სიცოცხლის განმავლობაში
services.AddScoped<IService, Service>(); // ერთი ობიექტი თითო HTTP მოთხოვნისთვის
სიცოცხლის ციკლის არჩევა დამოკიდებულია ობიექტის მდგომარეობის მოთხოვნებზე და აპლიკაციის შესრულების ეფექტიანობაზე.