Sobes.tech
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)