dependency-injection-guidelines.md blanket advice on avoiding singletons is misleading

Offen
#49,140 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
35/100
Issue-Typ
Dokumentation
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
csharp
Bereich
documentation

Rechercherichtung

Lies zuerst docs/core/extensions/dependency-injection-guidelines.md und den verknüpften PR #47991 und prüfe anschließend die Issue-Diskussion hinsichtlich der beabsichtigten Einschränkung. Erledigt ist dies, wenn eine abgestimmte, technisch korrekte Überarbeitung oder Begründung für die aktuelle Formulierung vorliegt, die das Problem mit pauschalen Vorgaben zur Lebensdauer behandelt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

:watch: Not Triaged
Describe the issue or suggestion

The following PR introduced new guidelines specifically around using Singleton lifetime in DI-centric application designs: https://github.com/dotnet/docs/pull/47991

The guideline clearly sides with "make everything transient by default" as the safer (major emphasis) and more performant (the last bullet point) approach.

IMO this seems to be giving a dangerously blanket advice to 6-8 million .net developers, nearly-encouraging them to swipe state management problems under the carpet of transient lifetime, instead of striving for clean stateless design and zero-allocations as seems to be the default guideline in the Java/Spring community. I understand the pragmatism of giving .net developers what the author likely saw as a safe "lowest common denominator" approach that'd keep an average LOB development team out of trouble, and in the legacy codebases with no design governance making everything transient by default may indeed be the only viable survival strategy, but framing it as THE best practice for all codebases (no qualification), makes it hard to impossible to advocate for clean stateless-by-default designs now that "Microsoft said it's a bad idea".


Document Details

⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

Vorherrschende Sprache
Keine Sprachdaten
Sterne
4.8k
Forks
6.1k
Ø Merge
22 Std. 46 Min.
Gemergte PRs (30 T.)
296

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus dotnet/docs

Alle Issues in dotnet/docs

Ähnliche Issues

Weitere Issues zu Documentation

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.