Middle
Για ποιο λόγο χρησιμοποιούνται οι μέθοδοι διαμόρφωσης υπηρεσιών σε C#;
sobes.tech AI
Απάντηση από AI
Για την εγγραφή εξαρτήσεων στο δοχείο εισαγωγής εξαρτήσεων (Dependency Injection container). Αυτό επιτρέπει στην υποδομή της εφαρμογής να διαχειρίζεται τη δημιουργία των παραδειγμάτων υπηρεσιών και να τα εγχέει εκεί όπου χρειάζονται.
Κύριοι στόχοι:
- Διαχείριση κύκλου ζωής: Ορισμός του χρόνου ύπαρξης ενός παραδείγματος υπηρεσίας (Singleton, Scoped, Transient).
- Αποσυνδεδεμένη αρχιτεκτονική: Μείωση της εξάρτησης μεταξύ των συστατικών μέσω χρήσης αφαιρέσεων (διασυνδέσεων).
- Διαχειρισιμότητα δοκιμών: Εύκολη αντικατάσταση υλοποιήσεων υπηρεσιών για μονάδες δοκιμών.
- Δυνατότητα διαμόρφωσης: Δυνατότητα αντικατάστασης μιας υλοποίησης με μια άλλη χωρίς αλλαγή στον κώδικα πελάτη.
Παράδειγμα εγγραφής υπηρεσιών σε ASP.NET Core:
// Startup.cs ή Program.cs σε Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
// Εγγραφή υπηρεσίας με κύκλο ζωής Singleton
services.AddSingleton<ISingletonService, SingletonService>();
// Εγγραφή υπηρεσίας με κύκλο ζωής Scoped
services.AddScoped<IScopedService, ScopedService>();
// Εγγραφή υπηρεσίας με κύκλο ζωής Transient
services.AddTransient<ITransientService, TransientService>();
// Εγγραφή MVC και άλλων υπηρεσιών
services.AddControllersWithViews();
}
Κύκλοι ζωής υπηρεσιών:
| Κύκλος ζωής | Περιγραφή | Παραδείγματα εντός μιας αίτησης (HTTP) |
|---|---|---|
| Singleton | Ένα παράδειγμα για όλη τη διάρκεια ζωής της εφαρμογής. | Ένα |
| Scoped | Ένα παράδειγμα κατά τη διάρκεια της αίτησης (στο πλαίσιο HTTP). | Ένα |
| Transient | Δημιουργία νέου παραδείγματος σε κάθε αίτηση υπηρεσίας. | Πολλά (σε κάθε injection) |