“Why would you ever want to use ASP.NET, are you still stuck in the 90’s?”, these are the exact words uttered by an old coworker of mine when I brought up the idea of considering using ASP.NET for a project we were about to start a couple years ago. I agreed with him for the most part at the time. Microsoft had developed a great language, great web framework and great tooling around it yet people were still not too happy about it. The primary reason we ended up not using ASP.NET for that project back then was because of how locked down the language and the framework was. Using ASP.NET meant paying for Windows Server licenses for our servers or sinking into some rabbit hole like Mono to be able to deploy our applications on Linux which was our platform of choice. But a lot has changed since then, Microsoft has really stepped up their game and has turned ASP.NET from being something you were forced to use because your employer was using it to something desirable by even the most hardcore hipster developers.
When I first learnt C# about 5 years ago, I thought it was the best programming language ever. But that excitement I had back then did not last very long as I started to find too many shortcomings in their offering. I started learning ASP.NET Core in the early days when the first public builds were available. My interest for ASP.NET Core and C# grew again as soon as Microsoft announced that it would be cross platform. See, the problem with Microsoft’s stack back in the days was not that it was a bad stack in terms of technical abilities, performance or most other metrics that mattered to a developer, the problem was that it was very locked down and you had to use proprietary paid Microsoft technologies like Windows Server and IIS to deploy your applications. This meant that the cost of running your services were going to be much higher compared to most other technology stacks, even Java which is C#’s biggest competitor. Even though the costs probably meant nothing for a big enterprise generating more revenue per year than what a typical developer would make in their lifetime, it mattered a lot for an early stage startup or a developer trying to launch something as a side project. Another stigma associated with Microsoft’s stack was that their technology was old and had a lot of old, deprecated and inconsistent API’s which made the whole stack feel bloated.
With the introduction of .NET Core, ASP.NET Core and newer versions of C#, Microsoft really changed the game. C# was already one of the top languages used in the industry, but this new direction Microsoft took really sealed their position and helped their stack’s adoption by a significant number. If you were living under a rock, .NET Core is a new framework released by Microsoft around a couple of years ago that fixed all the shortcomings of their stack before that. It is cross platform, performant, lean and best of all, open source. Nobody had thought that Microsoft would ever release anything that would run on any other platform than Windows, forget about a whole development platform that would work on Linux and Apple’s Mac OS X as well.
The terminology that Microsoft uses for the components of their stack can be a little confusing, so let me explain that briefly first:
C#
This is the name of the general purpose programming language Microsoft developed that is approved as a standard by ECMA. The latest major version of the language as of this writing is 7, but you can find the full history on Microsoft’s official history of C# page.
.NET Framework
This is a general purpose application framework that primarily uses C#. It can be used to create anything from desktop apps to mobile applications to web applications, however it is only supported on Microsoft’s Windows and Windows mobile platform.
.NET Core Framework
This is the new version of .NET that is cross platform and works on most major platforms that are not developed by Microsoft as well. Even though this is supposed to be the next generation of .NET framework, Microsoft still maintains the old .NET Framework.
.NET Standard
This is the name for the set of common core API’s that Microsoft is providing via .NET Framework and .NET Core to unify things so that libraries are cross compatible between different .NET systems.
ASP.NET Core
This is a web application framework that is built on top of .NET Core framework. This is the successor to ASP.NET which used to be Windows only.
Now that that’s out of the way, let’s dive into some of the things that Microsoft got right with their new tech stack that made me love C# and .NET Core!
Features
From the outside, the whole new .NET Core ecosystem might seem like a sheep in wolf’s clothes situation to those that have not done much research as it’s easy to think that it’s just a new version of the old .NET Framework. That is not really the case though, Microsoft has been really pushing the boundaries to raise a new wolf ground up. One of the things that differentiates .NET Core from its predecessor is the slew of new features Microsoft added. The biggest feature is that the new stack is cross platform. And it’s not some half assed cross platform implementation like we have seen in the past with some other languages either, they rebuilt the whole core ground up with cross platform in mind. This also enabled the use of latest application packaging systems such as containers and Docker with .NET Core. They also developed proper tooling that will let you develop in their stack cross platform which is something that Microsoft has never done before.
Another major feature is the removal of the dependency on IIS, which was Microsoft’s web server. Microsoft created a new standalone embedded web server they call Kestrel, which not only removed IIS as a dependency but also enabled developers to create self contained applications that created much more flexibility when it comes to deployments. That is not all though, there are a ton of other features in .NET Core that the old .NET did not have. The official Microsoft .NET Core Guide is a good place to start if you want to learn more about the features.
The feature set does not just stop at .NET Core though, C# itself has been getting continuous updates with a lot of useful features being added all the time. Notably, highly sought out features like tuples, async/await, local functions etc. have been added to make programming in C# a lot more efficient.
Performance
Another great reason to start using .NET Core is the performance improvements. Microsoft is on top of the pack again when it comes to performance among the popular general purpose programming languages out there. Performance is a touchy subject in development community because the stack and tooling can only take you so far when it comes to optimizing your application for performance, rest is on the hands of the developer to implement. But what a development stack can do is encourage and enforce best practises for performance and optimize common usage scenarios so that performance can be maximized on a bigger scope, which is exactly what Microsoft did.
C# is an amazing language on it’s own and comes with many features built in that allow you to fine tune your application for performance, but the .NET Core team has been working hard on optimizing a lot of built in API’s for maximum performance. Even the earlier releases of ASP.NET Core got notable mentions from TechEmpower Benchmarks for their performance. There are numerous examples of companies leveraging the performance optimizations available in .NET Core like Raygun did to maximize efficiency. Microsoft recently released the latest version of .NET Core, 2.1 along with a huge changelog of performance improvements. The development team has been consistently pushing updates with performance optimizations since the new framework was released.
Versatility
The biggest reason I picked up Microsoft’s stack again is versatility. Now that it is open source and cross platform, I can pretty much build everything with one stack. You can build desktop applications with UWP, cross platform mobile applications with Xamarin (now part of Microsoft), web applications with ASP.NET Core, real time applications with SignalR and a lot more. Heck, if you are a game developer you can also use Unity although that’s not made by Microsoft. I am all about using the right tool for the right job, and with this approach I can still do that while being able to use the language, tooling and API’s I am most familiar with and love. Best part is all of this is free!
Tooling
Never thought I would say this since things were buggy on the earlier releases, but tooling is one of the best things about the .NET ecosystem at the moment. You have multiple ways of developing in multiple platforms. Microsoft’s primary IDE, Visual Studio is second to none if you like working with IDE’s. For those that like more control over their tooling and don’t require the hand holding that an IDE provides, there is Visual Studio Code which is their code editor and command line tools which allow you to build, test and develop applications without the bloat of a full on IDE. VS Code also has a ton of third party extensions that help make your development experience better.
There is also Visual Studio for Mac which is not the same thing as the Windows version, but still is a complete package that allows you to develop on Microsoft’s new stack on Mac OS. If you are on Linux or just want a different IDE than Microsoft’s offering, the company behind Android Studio, Jetbrains has released an IDE called Rider which is amazing and is my main tool for development on Mac. Rider is also available for all three major platforms. Microsoft’s Intellisense autocomplete system is the best I have found in any major development stack, and with addition of tools like Jetbrains ReSharper things cannot get more efficient. My primary development machine is a MacBook and I love how productive my workflow is with Jetbrains Rider or VSCode.

Visual Studio For Mac
Microsoft has been investing time and engineering efforts in their stack for a long time which means they have a stable development stack, experienced and knowledgeable engineering teams and years and years of trust built up. The new .NET Core opens that up to an even bigger market while showing what a large corporation could do and how quickly they can turn things around. After the current CEO Satya Nadella got appointed, he started pushing the engineering and development side of the company further resulting in all these big changes, which makes sense since he came from an engineering background too. C# and .NET Core are probably the best things that have happened in the development space from Microsoft in a long time and I am glad they are doing what they are doing.
I literally had this exact same epiphany today at work. Was able to replace a slew of Python scripts with a common Core API running as a service in Linux. Very cool stuff!!
Glad to hear! With it being cross platform now, possibilities are endless. I feel much more productive on C# than all the other languages I have used.
I started developing in .NET about 8 months ago and I love it. And totally agree with you that Visual Studio is the best IDE I have worked with so far on Windows. Great to see Microsoft gaining more traction among developers.
The biggest reason developers are flocking to .NET in droves, aside from the great reasons mentioned in this article, is that Oracle is now abusing the Java developer community in numerous ways, including charging new outrageous licensing fees (see the recent announcements about Java SE 8 licensing fees for businesses), suing Google with regard to Android, and many more abuses. If Oracle keeps this up, the number of .NET developers will surely double within a very short time.
I had the same feeling. 🙂 I loved C#, and after some time I was going in direction of Node.js, which was a few years ago. Then ASP.NET Core came… Godsend. 🙂
There is an ‘extended’ version of this blog post, which mentions all the pros of new ASP.NET Core stack, which was architected and developed from scratch! – https://codingblast.com/why-asp-net-core/
The naming .NET Core and ASP.NET Core don’t, in my opinion, automatically communicate the cross-platform nature of these technologies. If Microsoft intended to attract new users to these technologies and its platform better marketing names should have been used which would distinguish these technologies from the traditional ASP.NET and .NET already known to be restricted to Windows.
Could ASP.NET CrossPlatform and .NET CrossPlatform or (ASP.NET Universal and .NET Universal) have been more intuitive marketing names than ASP.NET Core and ,NET Core, the goal being that those foreign to the platform would intuitively understand the ubiquitous nature of these technologies?
I agree, Microsoft has always been bad at naming things. The biggest thing people get confused about when talking about .NET is the names, everything sounds the same but is completely different. But again from a business point of view they still need to protect and promote their branding.
I tend to agree with your coworker. I’ve been using .NET for 17 years it’s relevance today along with most other server side / rich client frameworks has definitely been diminished by the rise of javascript frameworks and the notion of progressive web apps, which launch, look and feel like rich client applications. It’s definitely looking like in the future the primary use I’ll have for ASP.NET will be for developing Web API, and that’s about it. Admittedly ASP.NET core is an excellent environment for doing that. I think .NET is a great environment for developing back end stuff, the… Read more »
I enjoyed the article, i’m looking forward to blazor. Microsoft keeps amazing me!
Thank you! I am very excited for blazor, that was the only piece missing from making .net run everywhere!
You don’t actually need blazor to run .net on the Bowser. It’s just a stack on top of mono.wasm. And not a very good one at that.
The technical direction and cross platform modernation initiatives were unblocked organizationally by Nadella, but the pushing and vision and framework progress came from Guthrie and the technical leadership’s work over the past decade. Nadellas main initiatives revolve around growing into a cloud services firm and silo busting eliminate organizational redundancies. Except when he creates more silos, but that’s a different topic altogether.
You should also mention .Net Standard 2.0!
Good call! I don’t know how I missed that but I will update the post.
A superb set of information really good points are covered thanks for it keep sharing
dotnet core made me want to develop again… and I was a Java Dev, Great Article
Check out https://github.com/CarterCommunity/Carter too which is a library built on top of ASP.NET Core pipeline but gives you a choice of whether you choose the default and use the MVC framework.
[…] How Microsoft Made Me Love .NET Core And C# Again – Kaushal Subedi […]
[…] How Microsoft Made Me Love .NET Core And C# Again […]
I had the same feeling. 🙂 I loved C#, and after some time I was going in direction of Node.js, which was a few years ago. Then ASP.NET Core came… Godsend. 🙂
I had the same feeling. 🙂 I loved C#, and after some time I was going in direction of Node.js, which was a few years ago. Then ASP.NET Core came… Godsend. 🙂
The part of me that has been developing since the early 90s thinks, “Asp.net, while an unforgivably bad naming decision for a 2019 platform, didn’t exist on the 90s.” Naming and breaking changes have been the chief issue with .net core since it’s inception. I’ve still been bullish on it.since it’s inception. The ability to have the niceties of .net, but abandon the windows trashfire is wonderful. That said, most of what nadella gets credit for is actually Scott Guthrie’s work and initiative. Especially .net core. Nadella had nothing to do with it and is part of the reason it… Read more »
The main thing still missing for me in 2019 is a clean, simple web stack. While .NET Core looks really attractive now, ASP is still a bloated, opinionated mess, with no option for a simple HTTP server with a solid middleware pattern. I’ve been working with PHP and PSR-7 these past years, and while other languages and platforms offer cleaner middleware stacks (Dart/Shelf, Node/Express, Ruby/Rack, etc.) this has been a really delightful and productive experience. Sadly, having to use e.g. Kestrel and the overly complex, poorly designed ASP middleware concept, would feel like a huge setback. I’d say there is… Read more »
Meanwhile many of us have been coding in C# on .Net from the time of their birth and never left. Along with that we continued to learn other frameworks/languages too.
i really love this blog about .net core……….very well explained………..
thanks a lot ……keep sharing……
i really like the article……….
very well explained………overall got the information about dotnet………
thanks and keep sharing……….
Such nice blog good points covered really useful thanks for it keep sharing
Very well written article. You need to teach journalists how to do this.
Great article Keep it up. Thanks for sharing
ASP MVC and .NET core are all garbage. As far as web development goes nothing beats web forms by all means.
I guess you and your coworker aren’t very knowledgeable people as .NET didn’t exist in the 90s. .NET 1.0 didn’t comw out until 2002. If someone is going to badmouth a company’s tech they should at least have some clue as to what they’re talking about. Damn.
It’s just a hyperbole, it’s like when someone says “I told you not to do that 1000 times” they don’t actually mean 1000 times. That statement meant asp.net was seen as a dated technology, not necessarily released in the 90s. If we started taking everything in English for face value, we would be living in a different world.
SAYS BABBLING SHILL, core is DEAD, zero market shARE AND OLNY FANZZY BIG MOUTHS BLOGGER LIKE YOURSELF
The beta of .NET was available in 2000. The betas were actually pretty mature, they didn’t feel like betas at all, compared to previous offerings. It was actually pretty feasible to begin .NET projects in 2000, so that’s pretty close to the 90s… but not quite.