ASP.NET Core – Ein einziges Chaos

Seit 1998 entwickle ich Websites für große Unternehmen mit Hilfe von ASP, ASP.NET und ASP.NET Core.

Mit der Einführung von ASP.NET Core hat sich die Entwicklung mit Hilfe dieses Microsoft Konzepts jedoch zu einem Horrorszenario entwickelt:

Fehlende Schnittstellen

Im Zuge des Wunsches, so flexibel zu sein wie irgendmöglich, verzichtet Microsoft auf ein sauberes objektorientiertes Design mit Schnittstellen.

Stattdessen wird bei der Programminitialisierung vollständig auf Reflection gesetzt – eine Technik, die zur Laufzeit nach Objekten sowie deren Eigenschaften sucht und dynamisch die gefundenen Objekte erzeugt und konfiguriert.

Der Nachteil dieser Strategie ist vielfältig:

  1. Schreibfehler werden nicht zur Kompilierzeit erkannt, sondern erst zur Laufzeit.

    Unterschiedliche Laufzeitbedingugen – wie beispielsweise HostingEnvironmentExtensions.IsDevelopment führen möglicherweise dazu, dass Fehler erst auf dem Produktionsserver auftreten. Zu spät!

  2. Kein IntelliSense.

    Da der Kompiler keine Anhaltspunkte hat, kann er keine Vervollständigung anbieten oder Warnungen ausgeben. Es ist für den Entwickler nicht ersichtlich, ob eine der Initialisierungsfunktionen fehlt oder falsch definiert ist.

ASP.NET Core Dokumentation – Ein unüberwindlicher Moloch

Die ASP.NET Core-Dokumentation umfasst ca. 7.000 Seiten, wenn man sie als PDF ausgeben würde.

Alleine die Dokumentation des ASP.NET Core Routings umfasst mehr als 150 Seiten. ASP.NET Core Sicherheit und Identität mehr als 1.000 Seiten.

Wenn das Beschreiben alleine schon einer einzigen Teilfunktion eines Konzepts bereits mehr als 1.000 gedruckte Seiten zur Erklärung benötigt, dann ist das zugrundeliegende Konzept schlecht.

Es fehlt dem gesamten ASP.NET Core-Konzept an einer klaren Strategie. Es fehlt der rote Faden.

Dies trifft, im Zuge dessen, auch auf die Dokumentation zu:

Die ASP.NET Core-Dokumentation ist ein ungeordnetes Sammelsurium unstrukturierter Aussagen und Gedanken.

Sie beinhaltet in erster Linie Verweise auf vorgefertigte Implementationen (Projektvorlagen mit Teilimplementierungen oder fertige Beispielprojekte auf GitHub), im Sinne von: „Schaut her, was wir zusammengebastelt haben. Wir können zwar nicht erklären, wie es funktioniert oder warum es funktioniert, aber wenn Ihr das einfach so, ohne Sinn und Verstand, verwendet, müsste es funktionieren. Wie es funktioniert, müsst Ihr weder verstehen noch wissen.”

So ist die Dokumentation ist also nicht in der Lage, das Design von ASP.NET Core zu erklären oder eine aufeinander aufbauende Struktur zu vermitteln. Ich gehe davon aus, dass dies darin begründet ist, dass ASP.NET Core ohne klares Design entwickelt wurde. ASP.NET Core ist einfach nur ein Schmelztiegel unterschiedlichster Ideen und Einfälle.

Statt mit einer klaren, stringenten, schnittstellenbasierten Architektur, kommt ASP.NET Core mit immer neuen, wild zusammengestellten Erweiterungsmethoden daher. Wie viele andere Klassen- und Methodenbeschreibungen der Microsoft Dokumentation auch, weisen diese dann zusätzlich auch keine ausführliche Beschreibung im Referenzbereich zur jeweiligen Erweiterungsmethode auf. Man kommt also nur dann zum Ziel, wenn man sich permanent Informationen irgendwo im Internet oder in der unzusammenhängenden Dokumentation zusammensucht.

Hinzu kommt, dass auf einzelnen Seiten der ASP.NET Core-Dokumentation Informationsblasen unterschiedlichsten Inhalts unzusammenhängend in den laufenden Text eingefügt wurden. Informationen, die man an den jeweiligen Stellen niemals vermuten würde und daher später nie mehr wiederfindet.


Axel Dahmen Soft- and Hardware-Engineering
06.03.2021 03:10