Rockford Lhotka

VP, Open Source Creator, Author, Speaker

.NET Terminology

24 Sep 2024

I was recently part of a conversation thread online, which reinforced the naming confusion that exists around the .NET (dotnet) ecosystem. I thought I’d summarize my responses to that thread, as it surely can be confusing to a newcomer, or even someone who blinked and missed a bit of time, as things change fast.

.NET Framework

There is the Microsoft .NET Framework, which is tied to Windows and has been around since 2002 (give or take). It is now considered “mature” and is at version 4.8. We all expect that’s the last version, as it is in maintenance mode.

I consider .NET Framework (netfx) to be legacy.

Modern .NET

There is modern .NET (dotnet), which is cross-platform and isn’t generally tied to any specific operating system.

I suppose the term “.NET” encompasses both, but most of us that write and speak in this space tend to use “.NET Framework” for legacy, and “.NET” for modern .NET.

The .NET Framework and modern .NET both have a bunch of sub-components that have their own names too. Subsystems for talking to databases, creating various types of user experience, and much more. Some are tied to Windows, others are cross platform. Some are legacy, others are modern.

It is important to remember that modern .NET is cross-platform and you can develop and deploy to Linux, Mac, Android, iOS, Windows, and other operating systems. It also supports various CPU architectures, and isn’t tied to x64.

Modern Terminology

The following table tries to capture most of the major terminology around .NET today.

Tech Status Tied to Windows Purpose
.NET (dotnet) 5+ modern No Platform
ASP.NET Core modern No Web Framework
Blazor modern No Web SPA framework
ASP.NET Core MVC modern No Web UI framework
ASP.NET Core Razor Pages modern No Web UI framework
.NET MAUI modern No Mobile/Desktop UI framework
MAUI Blazor Hybrid modern no Mobile/Desktop UI framework
ADO.NET modern No Data access framework
Entity Framework modern No Data access framework
WPF modern Yes Windows UI Framework
Windows Forms modern Yes Windows UI Framework

Legacy Terminology

And here is the legacy terminology.

Tech Status Tied to Windows Purpose
.NET Framework (netfx) 4.8 legacy Yes Platform
ASP.NET legacy Yes Web Framework
ASP.NET Web Forms legacy Yes Web UI Framework
ASP.NET MVC legacy Yes Web UI Framework
Xamarin legacy (deprecated) No Mobile UI Framework
ADO.NET legacy Yes Data access framework
Entity Framework legacy Yes Data access framework
UWP legacy Yes Windows UI Framework
WPF legacy Yes Windows UI Framework
Windows Forms legacy Yes Windows UI Framework

Messy History

Did I leave out some history? Sure, there’s the whole “.NET Core” thing, and the .NET Core 1.0-3.1 timespan, and .NET Standard (2 versions).

Are those relevant in the world right now, today? Hopefully not really! They are cool bits of history, but just add confusion to anyone trying to approach modern .NET today.

What I Typically Use

What do I personally tend to use these days?

I mostly:

  • Develop modern dotnet on Windows using mostly Visual Studio, but also VS Code and Rider
  • Build my user experiences using Blazor and/or MAUI Blazor Hybrid
  • Build my web API services using ASP.NET Core
  • Use ADO.NET (often with the open source Dapper) for data access
  • Use the open source CSLA .NET for maintainable business logic
  • Test on Linux using Ubuntu on WSL
  • Deploy to Linux containers on the server (Azure, Kubernetes, etc.)

Other .NET UI Frameworks

Finally, I would be remiss if I didn’t mention some other fantastic cross-platform UI frameworks based on modern .NET:

-->