Sobes.tech
Junior — Middle

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.