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?
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 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.
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.
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.
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
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.
Thanks for reading and hope this helps!