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) |