Sobes.tech
Junior — Middle

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:

  1. 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.

  2. 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.

  3. 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.