Sobes.tech
Junior — Middle

Ποιοι τύποι κύκλων ζωής αντικειμένων υπάρχουν στο δοχείο IoC και πώς εφαρμόζονται;

sobes.tech AI

Απάντηση από AI

Στα IoC (Inversion of Control) containers, χρησιμοποιούνται συνήθως οι ακόλουθοι τύποι κύκλων ζωής αντικειμένων:

  1. Transient (Προσωρινός) — κάθε φορά που γίνεται αίτημα, ο κοντέινερ δημιουργεί μια νέα παρουσία του αντικειμένου. Χρησιμοποιείται όταν χρειάζεται ένα νέο αντικείμενο για κάθε λειτουργία.

  2. Singleton (Μονάδα) — ο κοντέινερ δημιουργεί μια παρουσία του αντικειμένου κατά το πρώτο αίτημα και την επιστρέφει σε όλα τα επόμενα. Κατάλληλο για υπηρεσίες με κατάσταση ή πόρους που πρέπει να είναι μοναδικοί.

  3. Scoped (Περιορισμένη) — το αντικείμενο δημιουργείται μία φορά για ένα ορισμένο scope (π.χ., για κάθε αίτημα σε μια web εφαρμογή) και επαναχρησιμοποιείται εντός αυτού του scope. Μετά το τέλος του scope, το αντικείμενο καταστρέφεται.

Παράδειγμα σε C# με χρήση Microsoft.Extensions.DependencyInjection:

services.AddTransient<IService, Service>(); // νέο αντικείμενο κάθε φορά
services.AddSingleton<IService, Service>(); // ένα αντικείμενο σε όλη τη διάρκεια ζωής της εφαρμογής
services.AddScoped<IService, Service>(); // ένα αντικείμενο ανά HTTP αίτημα

Η επιλογή του κύκλου ζωής εξαρτάται από τις απαιτήσεις σχετικά με την κατάσταση του αντικειμένου και την απόδοση της εφαρμογής.