Was ist der Unterschied zwischen dem Gültigkeitsbereich von Scoped- und Transient-Objekten im Kontext der Dependency Injection?
sobes.tech KI
Antwort von AI
Im Kontext der Dependency Injection in C# bestimmen die Gültigkeitsbereiche Scoped und Transient die Lebensdauer der erstellten Objekte:
-
Transient: Das Objekt wird jedes Mal neu erstellt, wenn es angefordert wird. Das bedeutet, bei jedem Aufruf des Dienstes oder bei jeder Injektion wird eine neue Instanz erzeugt.
-
Scoped: Das Objekt wird einmal während der Dauer einer Anfrage (Scope) erstellt. In Webanwendungen bedeutet dies in der Regel, dass innerhalb einer HTTP-Anfrage die gleiche Instanz verwendet wird, aber für eine andere Anfrage eine neue erstellt wird.
Beispiel:
services.AddTransient<IMyService, MyService>(); // neues Objekt bei jeder Anfrage
services.AddScoped<IMyService, MyService>(); // ein Objekt pro HTTP-Anfrage
Daher ist Scoped praktisch, um Zustand innerhalb einer einzelnen Anfrage zu speichern, während Transient für stateless-Services geeignet ist, bei denen bei jeder Anforderung eine neue Instanz benötigt wird.