ASP.NET is a mainstream web framework. Its great and mature, developed and supported by Microsoft. But its 2020, and with .NET 5 just released, is it still worth learning it or using it to build new products with? Or are there better approaches to ASP.NET for building web applications.
Lets See the Benefits of ASP.NET First
Its really mature. The first verion of ASP.NET dates back to January 2002. So if we count back this is 18 years that ASP.NET has been around. It has been used by large companies for small and big projects, and has passed the test of time
ASP.NET is really well documented. Being around for such a long time there is plenty of documentation for working with ASP.NET
ASP.NET is supported. Besides being matire and having lots of documentation available ASP.NET you may receive support by Microsoft, if you are willing to pay for it.
ASP.NET has Blazor. If you do not want to use a separate third party client-side framework like Angular or React, Blazor is your answer. Using Blazor you can build web apps, PWAs and hybrid native apps, which can everywhere on desktop and mobile.
ASP.NET has massive ecosystem. This includes the likes of Xamarin, ML.NET, Q#, Microsoft R. These allow building cross-platform apps, IoT apps, training up ML models, Quantum computing and data analysis respectively.
Why Would You Choose ASP.NET?
To support old projects, where transfer to newer alternatives is expensively prohibitive
If your project will primarily involve working with Microsoft technologies and products - Azure, Office, Dynamics.
Now Lets Have a Look Why Not ASP.NET?
Newer alternatives. As we said it 2020, and there are newer modern languages which came into existence in the last decade. To name a few - Go, Rust.
ASP.NET is based on .NET. It compiles to intermediate code, which require CLR to be installed on the machine to be able to use it. And the more things you have the more things can go wrong, and more time to maintain.
With .NET5 which was just released its claimed the code can be compiled into a single executable. We are still to see how this will work in practice. But as it will embed also the CLR runtime the executable will still be larger and will take more space than modern alternatives
Developing with ASP.NET is slow. From personal experience I have always found it slower to make a change then run in debug mode to preview which takes forever to compile and start the local server. In time it becomes an annoyance. Compare it with Go where you make the change, then with tools like Fresh and Air your rebuild takes place in real time.
Developing for ASP.NET is expensive. To properly use ASP.NET you need Visual Studio Enterprise, which is very expensive. Yes its true that the community version is free, but yeah.
The cross-platform usage of ASP.NET is better from old days. But its an afterthought. Its better to go directly with newer and modern languages, which were built with cross-platform usage from day one.
ASP.NET is tightly coupled with Microsoft's ecosystem. But there are many more tools out there and lots of lovely software options. I personally have found it lacking for anything not connected with Microsoft. For instance drivers for free open source technologies (i.e. MySQL). And you are stuck with proprietary (expensive) alternatives
Tools for .NET seem to be proprietary. Though there are some open-source options, most of them are with less features, and you need to convert into paying customer for more normal use. In comparison most of the other languages have really huge ecosystem of open source projects
Its 2020 and should you learn 2020? If you don't know ASP.NET already there is no reason to start learning it now. Directly get yourself into newer and modern alternatives - Go, Rust, Deno, Node.js. These are much easier to start with, very fun to work with, and do not require expensive tooling.
Its 2020 and should you start a new project in ASP.NET? You will probably be better off with a real open source framework. One that is not so tightly coupled with Microsoft. Lovely alternatives Go (Chi, Fiber, Gorilla), Rust (Actix, Rocket), PHP (Laravel), Python (Django, Flask).