Ποια είναι η διαφορά μεταξύ του πεδίου των αντικειμένων Scoped και Transient στο πλαίσιο της Εισαγωγής Εξαρτήσεων;
sobes.tech AI
Απάντηση από AI
Στο πλαίσιο της Εισαγωγής Εξαρτήσεων σε C#, οι περιοχές Scoped και Transient καθορίζουν τον χρόνο ζωής των δημιουργούμενων αντικειμένων:
-
Transient: το αντικείμενο δημιουργείται κάθε φορά που ζητείται. Αυτό σημαίνει ότι σε κάθε κλήση υπηρεσίας ή ενέσιμου, θα δημιουργείται ένα νέο αντίγραφο.
-
Scoped: το αντικείμενο δημιουργείται μία φορά κατά τη διάρκεια μιας αίτησης (scope). Στις web εφαρμογές, αυτό συνήθως σημαίνει ότι κατά τη διάρκεια μιας ίδιας HTTP αίτησης, θα χρησιμοποιείται το ίδιο αντίγραφο, αλλά για μια άλλη αίτηση θα δημιουργείται ένα νέο.
Παράδειγμα:
services.AddTransient<IMyService, MyService>(); // νέο αντικείμενο σε κάθε αίτηση
services.AddScoped<IMyService, MyService>(); // ένα αντικείμενο ανά HTTP αίτηση
Έτσι, το Scoped είναι βολικό για την αποθήκευση κατάστασης εντός μιας αίτησης, ενώ το Transient είναι κατάλληλο για υπηρεσίες χωρίς κατάσταση (stateless), όπου χρειάζεται νέο αντίγραφο κάθε φορά.