ASP.NET Core – Nothing But Chaos
Since 1998 I have been developing websites for large companies using ASP, ASP.NET and ASP.NET Core.
With the introduction of ASP.NET Core, however, development by using this Microsoft framework has turned into a horror scenario:
In their desire to be as flexible as possible, Microsoft refrains from implementing a clean, object-oriented design using interfaces.
Instead, program initialization is based entirely on Reflection – a technique that searches for objects and their properties at runtime and dynamically creates and configures the objects found.
The disadvantage of this strategy is manifold:
Misspellings are not recognized at compile time, but only at runtime.
Different runtime conditions, such as HostingEnvironmentExtensions.IsDevelopment, may result in undetected errors occuring only on the production server. Too late!
Since the compiler has no clues, it cannot offer any completion or warnings. So, the developer cannot see if initialization functions may be missing or wrongly defined.
ASP.NET Core Documentation – An Impregnable Juggernaut
The ASP.NET Core-Documentation comprises approx. 7,000 pages, if you were to output it as a PDF.
The ASP.NET Core Routing documentation alone is more than 150 pages long. ASP.NET Core Security and Identity more than 1,000 pages.
If describing just a single section of a framework requires more than 1,000 printed pages to explain, then the design of that section is poor for sure.
The entire ASP.NET Core framework lacks a clear strategy. It's missing a common thread.
This observation also applies to the documentation:
The ASP.NET Core documentation is a disorganized jumble of unstructured statements and thoughts.
It primarily contains references to canned implementations (project template scaffolds or prefabricated sample projects on GitHub), like “Look what we have put together. We can't explain why it works or how it works, but if you just use it like that, without rhyme or reason, it should work. You don't need to understand or know.”
Consequentially, the documentation is not able to explain the design of ASP.NET Core or to convey a consecutive structure. I suppose it's because ASP.NET Core itself was developed without a clear design in mind. ASP.NET Core is just a melting pot of all kinds of different ideas.
Instead of a clear, stringent, interface-based architecture, ASP.NET Core constantly provides new, unrelated extension methods. And, like many other class and method descriptions in the Microsoft documentation, these do not have a detailed description in the reference area for the respective extension method. So all you can do, to achieve your goals, is to permanently hunt for information somewhere on the Internet or in the incoherent documentation.
In addition, on individual pages of the ASP.NET Core documentation, non-related information bubbles are incoherently injected into the text. Information you would never expect at these locations and, therefore, information you will never find ever again at a later time.