Welche Arten von Lebenszyklen von Objekten gibt es im IoC-Container und wie werden sie angewendet?
sobes.tech KI
Antwort von AI
In IoC-Containern (Inversion of Control) werden in der Regel die folgenden Objektlebenszyklus-Typen verwendet:
-
Transient (Vorübergehend) — bei jeder Anforderung erstellt der Container eine neue Instanz des Objekts. Wird verwendet, wenn für jede Operation ein neues Objekt benötigt wird.
-
Singleton — der Container erstellt bei der ersten Anforderung eine Instanz des Objekts und gibt diese bei allen nachfolgenden Anforderungen zurück. Geeignet für zustandsbehaftete Dienste oder Ressourcen, die einzigartig sein sollen.
-
Scoped (Geltungsbereich) — das Objekt wird einmal pro definiertem Geltungsbereich (z.B. pro Anfrage in einer Webanwendung) erstellt und innerhalb dieses Bereichs wiederverwendet. Nach Abschluss des Geltungsbereichs wird das Objekt zerstört.
Beispiel in C# mit Microsoft.Extensions.DependencyInjection:
services.AddTransient<IService, Service>(); // neues Objekt bei jeder Anforderung
services.AddSingleton<IService, Service>(); // ein Objekt während der gesamten Lebensdauer der Anwendung
services.AddScoped<IService, Service>(); // ein Objekt pro HTTP-Anfrage
Die Wahl des Lebenszyklus hängt von den Anforderungen an den Objektzustand und die Leistung der Anwendung ab.