Sobes.tech
Junior — Middle

IoC კონტეინერში ობიექტების სიცოცხლის ციკლის რა ტიპები არსებობს და როგორ გამოიყენება ისინი?

sobes.tech AI

პასუხი AI-სგან

IoC (Inversion of Control) კონტეინერებში ჩვეულებრივ გამოიყენება შემდეგი ტიპის ობიექტების სიცოცხლის ციკლი:

  1. Transient (გადამწყვეტი) — ყოველი მოთხოვნის დროს კონტეინერი ქმნის ახალი ობიექტის ნიმუშს. გამოიყენება, როდესაც თითო ოპერაციისთვის საჭიროა ახალი ობიექტი.

  2. Singleton (ერთიანი) — კონტეინერი ქმნის ობიექტის ნიმუშს პირველ მოთხოვნაზე და აბრუნებს მას ყველა შემდგომ მოთხოვნაზე. შესაფერისია სერვისებისთვის, რომლებსაც უნდა ჰქონდეთ სტატუსი ან რესურსები, რომლებიც უნდა იყოს უნიკალური.

  3. Scoped (საზღვრული) — ობიექტი ქმნება ერთხელ განსაზღვრულ scope-ისთვის (მაგალითად, ვებ-აპლიკაციაში თითო მოთხოვნისთვის) და გამოიყენება ამ scope-ის ფარგლებში. Scope-ის დასრულების შემდეგ, ობიექტი განადგურდება.

C#-ში გამოყენებით Microsoft.Extensions.DependencyInjection-ის:

services.AddTransient<IService, Service>(); // ახალი ობიექტი ყოველი მოთხოვნის დროს
services.AddSingleton<IService, Service>(); // ერთი ობიექტი მთელი აპლიკაციის სიცოცხლის განმავლობაში
services.AddScoped<IService, Service>(); // ერთი ობიექტი თითო HTTP მოთხოვნისთვის

სიცოცხლის ციკლის არჩევა დამოკიდებულია ობიექტის მდგომარეობის მოთხოვნებზე და აპლიკაციის შესრულების ეფექტიანობაზე.