If you are new to the .NET world, a .NET developer who came from a Windows or WebForms background and wanted to start learning the ASP.NET frameworks, chances are you might find yourself confused with the different "buzzwords" around the internet. You might have heard or read about the terms ASP.NET, MVC, ASP.NET MVC 3, 5 and 6, Web API, Web Forms, Web Pages,  Razor, ASP.NET Core 2, 3.1, ASP.NET 5, Blazor, .NET Core , etc and yet, you still find yourself lost and confused. As a beginner, you might find yourself having a hard-time understanding how each framework works and what path you should follow. The main reason for this is either you don’t have real exposures to apply the framework or simply because you are completely new to web development and you have no idea where to begin. Well, that's normal and totally understandable.

.NET is huge and it can be very overwhelimg to learn the different frameworks and it's concepts all at once. Even myself  don't know all of them and still strying to learn each day. In this post, we're going to talk about the different frameworks in ASP.NET and how it evolves up until this moment.

Before we jump into ASP.NET, let's first start with the top level overview for you to "hopefully" better understand what .NET is.

So, What the heck is .NET?

.NET

Based on the preceding illustration, .NET is a platform for building any types of applications. It provide runtimes , programming languages, libraries, tooling and frameworks that enables you to build any applications that you want. Depending on the .NET runtime you are using, you will be able to build and deploy different types of applications targetting different environments. For example, you may use Xamarin or Mobile Blazor Bindings to build iOS and Andriod mobile apps, use Windows Presentation Foundation (WPF), WinForms or Universal Windows Platform (UWP) to build desktop apps, use Azure to build and deploy apps and use ASP.NET to build web apps.

It was my intent to highlight the Web box from the preceding illustration as we won't be convering all frameworks in .NET. It could probably take whole dedicated book to talk about them in details. Instead, we will just be focusing on the Web framework aspect in .NET.

Supported Programming Languages

The most common programming languages used for building .NET apps are C#, Visual Basic and F#. If you are reading this and wanted to learn .NET, particularly ASP.NET web development, I would really recommend you to pick C# as it's widely used, rich features, and more popular compared to other supported languages.

Now, let's talk a bit about the various .NET platforms and runtime implementations because I think it's beneficial if you will know how .NET works under the hood.

The Different Flavors of .NET

.NET Platforms

.NET Framework , Mono and .NET Core are the different .NET platform implementations that uses specific runtimes. Regardless which .NET programming language you're using, your code will run natively on any compatible OS. Different .NET implementations handle the heavy lifting for you.

The following is the quick definitions of each platforms:

  • The .NET Framework or often referred to as the "Full .NET Framework" is the legacy runtime that only runs on Windows operating system. The latest version as of this time of writing is .NET Framework 4.8. Version 4 is the last major version release for this platform but it will still be supported and distributed with future releases of Windows
  • Mono is an open-source alternative to .NET Framework which was built as a cross-platform implementation of .NET and later transitioned to targeting mobile devices as iOS and Android devices. Mono is the runtime used as part of Xamarin.
  • .NET Core is a refactored version of .NET Framework. It was redesigned to be modular enabling developers to plug components which are only required for the project, most features will be available as plugins via NuGet. One of the good things about being modular is the ability to upgrade features without impacting the other features that your application uses. Adding to that, .NET Core is a cross-platform runtime which enables you to deploy app in Windows, OSX or Linux operating systems. It also is a cloud optimized runtime enables you to deploy and debug app in the cloud. The .NET Core can be bin-deployed along with your app, allowing you to run apps on the same server that target multiple versions of .NET Core. The latest version of .NET Core as of this time of writing is 3.1.

    ASP.NET WebForms, Visual Basic, WCF and others won't be available in future versions of .NET.

But what about this thing called .NET 5?

.NET 5 was officially releasted last November 10th 2020. It was one of the biggest releases in the .NET ecosystem and in fact, it's the future of .NET. Technically, it's the current version after .NET Core 3.1. Microsoft decided to use .NET 5 instead of .NET Core 4 to avoid confusion between the Full .NET Framework 4.x. This is one of the reason why Microsoft officially announced that .NET Framework 4.8 will be the last major version of it we can expect to see.

The ultimate goal is to unify all existing .NET frameworks (Full .NET Framework, Xamarin(Mono) and .NET Core) by taking the best of each existing framework APIs to create a single platform that you can use for all your modern .NET code. The idea behind .NET 5 was to make .NET development simpler, but also richer in every sense. In other words, there will be just one .NET going forward that enables you to target Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly and more. How cools is that? 😉

For more information about .NET 5, read: Introducing .NET 5

The Evolution of ASP.NET

At this point, I hope you now have a better understanding about the .NET platform in general and how it powers various frameworks to create powerful applications.  Now, let's talk about ASP.NET and how the framework evolved.

What ASP.NET is?

ASP.NET is a web framework for building scalable and dynamic web applications and services that sits on top of .NET.  ASP.NET makes things easier for you to learn to web development. For as long as you know C#, basic HTML and CSS then you should be able to learn web development in no time.

ASP.NET in Full .NET Framework

Borefore .NET Core came into life, ASP.NET web applications can only run on Windows OS under the Full .NET Framwork.

ASP.NET in Full .NET Framework

As you can see from the preceding illustration, there are many things that you can do with ASP.NET. You can build web apps using different UI models, create a Web API that serves data and as well as implement real-time capability using ASP.NET SignalR.

ASP.NET WebForms was the first web UI model that was introduced in the release of .NET Framework 1.0 back in 2002. WebForms uses a .ASPX file extension; which is commonly known as "WebForms View Engine". This special file type is a markup engine that contains a mixture of HTML and server-side code such as  VB.NET or C# that are processed by the web server (IIS) to output HTML in the browser.  It then became a hit because WebForms enables Rapid Applications Development (RAD) in which you can take advantage of the design surface, powerful server controls and components. The drag-and-drop and event driven model enables desktop/windows app developers to easily jump on web development as they are already familiar with them. While there are a lot of great features in WebForms, it also has alot of downsides and limitations. On top of that, it abstracts a lot of the "http" stuff which makes it very difficult to understand real web development. If you are reading this and used WebForms before, you know what I mean. 😛

A few years after WebForms became popular, Microsoft introduced ASP.NET MVC 1.0 as new alternative model for building web applications. Bringing MVC into .NET opened up a wider audience of developers as it values a clean separation of concerns, friendly URL routings, allow deeper extensibility and follows real web development experience. While the early versions of MVC addresses most of the Web Forms downsides, still it uses the .ASPX-based markup engine to serve up pages. Many were not glad about the integration of .ASPX markup engine in MVC as it was too complex to work with the UI and it can potentially affect the overall performance of the application due to its processing overhead. When Microsoft released ASP.NET MVC 3.0 in early January of 2011, the "Razor View Engine" came into life as a new markup engine addition to power ASP.NET MVC Views. The Razor View Engine in ASP.NET full .NET framework supports both VB.NET (.vbhtml) and C# (.cshtml) as the server-side language.

Another web framework model that was introduced in ASP.NET was Web Pages which also uses Razor as the markup engine. It was meant for creating simple dynamic web applications.

ASP.NET also provides a framework called Web API that makes it easy to build RESTful services that reach a broad range of clients, including browsers and mobile devices.

ASP.NET also provides built-in templates for building Single Page Applications such as KnockouJS, Backbone, AngularJS and EmberJS.

So, if you've heard or seen articles about WebForms, ASP.NET MVC 1 -5, Web Pages, Web API 1-2 and SignalR,  then those web framework models are running under the Full .NET Framework. While the Full .NET framework is mature and stable, you should keep in mind that any apps built on top of it will only run in Windows.

Introducing ASP.NET Core

ASP.NET Core is the cross-platform version of ASP.NET with other new frameworks/capabilities added. It's absolutely FREE and Open source. ASP.NET Core was called "ASP.NET 5" when first introduced along with .NET Core 1.0.

When ASP.NET Core was introduced, a lot of things were changed in a better way. Since the framework was redesigned to be modular, unified and cross-platform, many features and capabilities from the full .NET framework were discontinued such as the Web Forms and VB.NET support. Because of these changes, the Razor View Engine also dropped the support for .vbhtml file extension, leaving it to only support C# code.

One of the biggest change in ASP.NET Core back then was MVC 6 being the "Unified Framework". In Full .NET Framework ASP.NET MVC, MVC Controllers were different from Web API Controllers. The MVC controller used the System.Web.MVC.Controller base class and a Web API Controller used the System.Web.Http.ApiController base class. In MVC 6, there is only one Controller base class for both MVC and Web API controllers which is the Microsoft.AspNet.Mvc.Controller class. ASP.NET 5 will see MVC, Web API and Web Pages combined into one framework called MVC 6. At a later time, the MVC 6 term was replaced with the ASP.NET Core MVC to align with the .NET Core family.

Microsoft has invested alot of time and effort for making a framework that works pretty well regardless of OS. New features and performance improvements have been added making .NET Core 3.1 the fastest version of .NET Core to date prior to .NET 5.

ASP.NET Core 5 and the Future

With the release of .NET 5, ASP.NET Core version has been realigned as well, thus taking 5 as the version but retaining the Core suffix to avoid the confusion with ASP.NET MVC 5 in Full .NET Framework. With that said, the current and latest version after ASP.NET Core 3.1 is ASP.NET Core 5.

ASP.NET Core in .NET 5

As you can see from the preceding illustration, there are lots of things that you can do in ASP.NET Core. This gives you the flexibility to choose whatever framework and services you want to use when building web applications. In fact, you can even mix or combine any of these frameworks to create powerful applications. Highlighted in yellow are the new things in ASP.NET Core.

Razor Pages is another web framework for building ASP.NET Core web applications. It was first introduced in the release of ASP.NET Core 2.0 and became the default web application template for ASP.NET Core.

ASP.NET Core also provides built-in support for Angular and React and as well as adding support for gRPC - a language agnostic, high-performance Remote Procedure Call (RPC) framework.

The biggest addition to ASP.NET Core 5  was Blazor. Blazor was first introduced as an experimental project early of year 2018. It’s the latest addition to the ASP.NET Core web frameworks that’s based on Single Page Application (SPA). You can think of it as a React, Angular, Vue or other SPA-based frameworks but is powered by C# and Razor View Engine to create web application without having you to write JavaScript. Yes, you heard that right – without JavaScript! Though Blazor doesn’t require you to use JavaScript, it offers a feature called JavaScript interoperability (JS interop) which allows you to invoke JavaScript code from your C# code and vice versa. Blazor comes in two Blazor - Blazor Server and WebAssembly (WASM). For more information about Blazor, see: Getting Started with Blazor

So, if you are planning to learn web development with ASP.NET, I would strongly recommend you to start with ASP.NET Core 5 as it's the future of ASP.NET. You can head over to the ASP.NET official documentation here to get started.

I will also be writing technical articles related to ASP.NET Core 5, .NET 5 and Blazor very soon, so stay tuned!

If are new to ASP.NET Core and wanted to kick start you web development journey or you just want to support me, you can buy a copy of our book here about: ASP.NET Core 5 for Beginners

book excerpts:

ASP.NET Core 5 for Beginners is a comprehensive introduction for those who are new to the framework. This condensed guide takes a practical and engaging approach to cover everything that you need to know to start using ASP.NET Core for building cloud-ready, modern web applications.

When you buy a print copy from Amazon US, use this link and apply the code 25DOTNET5 to reedem a 25% discount. Promotion will run from 18th February through 18th March.

Summary of Terms

The following table is the summary of terms and it's definitions.

Term
Definition
Platform
.NET
is a Platform and ecosystem.
.NET Framework
is a Platform known as "Full .NET Framework" that runs on Windows only.
Mono
is cross-platform implementation of .NET and use as part of Xamarin
.NET Core
is a refactored version of .NET Framework. It was redesigned to be modular, lightweight and blazing fast. Cross-platform and runs everywhere.
.NET 5
is unified .NET platform that combines some of the .NET Framework APIs and greatness of Mono and .NET Core. This is the future of the .NET ecosystem.
Xamarin
is a cross-platform mobile app platform for building Android and iOS apps with .NET and C#.
Mono
ASP.NET 1 - 4.8
is a web framework for building scalable and dynamic web applications and services that sits on top of Full .NET Framework.
.NET Framework
ASP.NET WebForms
is a web framework Model with `.aspx` file extension. It relies heavily on server-side Web Controls, drag-drop and UI event-driven model.
.NET Framework
ASP.NET MVC 1 - 5
is a web framework Model that follows the MVC pattern to value the separation of concerns. It can use either WebForms View Engine (`.aspx`) or Razor View Engine (`.cshtml` or `.vbhtml`) to generate HTML along with server-side logic.
.NET Framework
ASP.NET Web Pages
is a web framework Model that mainly uses Razor View Engine. It was meant for creating simple dynamic web applications.
.NET Framework
ASP.NET Web API 1 - 2
is a framework for building RESTful services in .NET.
.NET Framework
ASP.NET SignalR
is a framework for building real-time functionality in .NET. It uses WebSockets as the default transport, and gracefully falls back on other technologies when it's not available, while your application code stays the same.
.NET Framework
ASP.NET 5
the initial ASP.NET Core name when .NET Core was first released. The first ASP.NET version running in .NET Core.
.NET Core
ASP.NET MVC 6
the initial ASP.NET Core MVC name when .NET Core was first released. It follows the same concept as the traditional ASP.NET MVC but running in .NET Core
.NET Core
ASP.NET Core 1 - 3.1
is a web framework for building scalable and dynamic web applications and services that sits on top of .NET Core. The framework was going to be called ASP.NET 5 when ready. However, in order to avoid implying it is an update to the existing ASP.NET framework, Microsoft later changed the name to ASP.NET Core at the 1.0 release.
.NET Core
ASP.NET Core MVC
is the MVC web framework model equivalent in ASP.NET Core.
.NET 5
ASP.NET Core API
is a framework for building RESTful services in ASP.NET Core. Both MVC and API in ASP.NET Core uses the same Controller base class.
.NET 5
ASP.NET Core Razor Pages
is a web framework Model for building ASP.NET Core web applications. This is the default template for creating a new ASP.NET Core web application. It's the replacement to Web Pages from the .NET Framework.
.NET 5
ASP.NET Core SignalR
is a framework for building real-time functionality in .NET Core.
.NET 5
ASP.NET Core gRPC
is a language agnostic, high-performance Remote Procedure Call (RPC) framework.
.NET 5
Razor
often referred to as "Razor View Engine". Is a markup or view engine that powers Razor Pages, MVC and Blazor applications.
.NET 5
ASP.NET Core 5
is the future of ASP.NET and the latest version of ASP.NET Core that packed with great things.
.NET 5
ASP.NET Core Blazor
is a web framework model that’s based on Single Page Application (SPA) powered by C# and Razor View Engine to create web application without having you to write JavaScript. Razor components are the building blocks for Blazor applications. Blazor comes in two Blazor - Blazor Server and WebAssembly (WASM).
.NET 5

Thanks for reading and hope this helps!