Sobes.tech
Middle

Wofür werden die Konfigurationsmethoden für Dienste in C# verwendet?

sobes.tech KI

Antwort von AI

Para die Abhängigkeiten im Dependency Injection Container zu registrieren. Dies ermöglicht es der Infrastruktur der Anwendung, die Erstellung von Service-Instanzen zu verwalten und sie dort zu injizieren, wo sie benötigt werden.

Hauptziele:

  • Lebenszyklusverwaltung: Bestimmung der Lebensdauer einer Service-Instanz (Singleton, Scoped, Transient).
  • Entkoppelte Architektur: Verringerung der Abhängigkeit zwischen Komponenten durch Verwendung von Abstraktionen (Schnittstellen).
  • Testbarkeit: Einfache Ersetzung von Service-Implementierungen für Unit-Tests.
  • Konfigurierbarkeit: Möglichkeit, eine Implementierung durch eine andere zu ersetzen, ohne den Client-Code zu ändern.

Beispiel für die Registrierung von Services in ASP.NET Core:

// Startup.cs oder Program.cs in Minimal APIs
public void ConfigureServices(IServiceCollection services)
{
    // Registrierung eines Service mit Singleton-Lebenszyklus
    services.AddSingleton<ISingletonService, SingletonService>();

    // Registrierung eines Service mit Scoped-Lebenszyklus
    services.AddScoped<IScopedService, ScopedService>();

    // Registrierung eines Service mit Transient-Lebenszyklus
    services.AddTransient<ITransientService, TransientService>();

    // Registrierung von MVC und anderen Standarddiensten
    services.AddControllersWithViews();
}

Lebenszyklen von Services:

Lebenszyklus Beschreibung Instanzen im Rahmen einer Anfrage (HTTP)
Singleton Eine Instanz während der gesamten Lebensdauer der Anwendung. Eine
Scoped Eine Instanz während der Lebensdauer der Anfrage (im HTTP-Kontext). Eine
Transient Es wird bei jeder Service-Anfrage eine neue Instanz erstellt. Mehrere (bei jeder Injektion)