Clearing up all the .Net confusion. A simple guide to understanding .Net from A-z
Tags: dotnet, beginners, csharp, aspdotnet
Published: 2023-07-11 11:57:51

## Hey There 👋🏻
If you're new to the world of .Net and C#, then you have surely heard about all the buzz words that seem similar but in reality, they're completely different.

.Net, .Net framework, .Net Core, Asp NetCore, Asp Net, and C#.

All these terms sound overwhelming and sort of confusing especially for the new comers to the vast .Net ecosystem.

In this post, we'll take a look at what all these buzz words mean and what're the important distinctions that you should make about all of them.

## 🗂️ Table of contents
🔗 [What's .Net as a whole](#net-whole)
🔗 [What's the .Net framework](#net-framework)
🔗 [What's .Net Core](#net-core)
🔗 [What's Modern .Net](#modern-net)
🔗 [What's Mono](#mono)
🔗 [What's Asp Net Core](#asp-core)

Before we begin, you MUST understand this point:

> .Net isn't C#, many people think that C# is .Net and vice versa, C# is a programming language that runs on the .Net platform, but it's not only C# that can be used on the platform, there are other languages that work on .Net, like F# and Visual Basic VB. The platform of .Net actually provides a lot of things to C#, like the data types that you may be familiar with, such as **string, int, double, etc..**, in fact, C# doesn't define those types, instead, C# keywords such as **string, int** and the like, map to to the underlying types provided by the platform.
Take for example the keyword **int**, it maps to `System.Int32`, **double** maps to `System.Double`, and **string** maps to `System.String`, so make sure you comprehend this point so that it wouldn't cause ambiguity as we go forwards. 

With that said, let's begin 🚀

## What's .Net as a whole 🧐 <a name="net-whole"></a>
Put simply, .Net is like an umbrella, that many tools, libraries and programming languages fall under. The platform allows developers to create applications of different types, such as web applications, desktop apps, mobile apps, Internet of Things **IoT** apps, and even games, it's crazy right?

The platform has implementations, multiple ones actually, so that .Net code could be made possible to run on different operating systems, like Windows, MacOs, Linux, Android and iOS the list goes on.
The major implementations of .Net are:

1: .Net framework
2: .Net Core
3: Mono

Let's talk about each one of them, coming next.

## What's the .Net framework 🧐<a name="net-framework"></a>
.Net framework is a development framework that was made by Microsoft specifically for Windows OS, it was released in 2002 and had a long journey, and it was then preinstalled on Windows machines straight out of the box.
The framework offers a **C**ommon **L**anguage **R**untime or **CLR** for short, that manages the execution of the code, and a library known as the **B**ase **C**lass **L**ibrary **BCL** which provides a massive number of classes to develop applications from.

.Net framework was open source but didn't allow public contributions, the improvements and changes in it were made by the .Net team only, but that changed with .Net core, coming up next...

## What's .Net Core 🧐<a name="net-core"></a>
.Net Core is a cross-platform software development framework also designed by Microsoft, it's open source and the community can contribute to its development.
Released in June 2016, the new framework allowed for development outside of the scope Windows, unlike the old .net framework, which was tied to the Windows operating system, .Net core can run on Windows, MacOs, Linux and so on.

The new framework is modular meaning that's much more light weight than the old .net framework, if that doesn't make sense, let's discuss it.

**.Net framework** includes all the libraries no matter what type of application you're developing, which made it heavier, because your app will not use most of the libraries that it includes.

**.Net Core** on the other hand, by being modular, you only add what's needed for your project, like if you're developing a website, you don't need the library for developing windows apps right?
Hope it makes sense now

## What's Modern .Net 🧐<a name="modern-net"></a>
In 2016, when .Net core was released, Microsoft began updating the new framework while also releasing some updates for the old .Net framework, version 4.8 of .Net framework was the last version to be released , it'll will remain supported, however, no more updates will rule out for the old framework.
For the .Net core side of things, major updates were being released since its debut to the public, if you've followed along the versions of .Net Core, you might have noticed that there's no .Net Core 4X, the successor for .Net Core 3X was .Net 5, that was intended to avoid the confusion at that time between .Net framework and .Net Core.
Notice I said .Net 5 and not .Net Core 5, that's right, the word **Core** was dropped from the framework's name, the intention behind this is that Microsoft wanted to emphasize the fact that .Net Core, is the main/primary implementation of .Net from that time onwards.

Since .Net 5, Microsoft announces a major release every year in November, by the time of writing this post, we're at version 7 of the more **structured** & **unified** framework, however, .Net 7 is a current version, which means its support drops **18** months after the initial release date, these versions are called **Current** or **Preview** versions.

The latest **L**ong **T**erm **S**upport (**LTS**) version is .Net 6, these versions have 3 years of support from Microsoft after the general availability.

## What's Mono 🧐<a name="mono"></a>
Mono is a .Net implementation that wasn't developed by Microsoft, Mono is a free third party developed implementation that was meant to allow .Net to run outside the world of the .Net framework which was closely tied to Windows, so developers could run their apps on Linux and MacOs. The Mono project was the foundation of **Xamarin** which made mobile apps development possible with .Net. In addition to that, Mono was used for cross-platform game development using the **Unity** game engine.

## What's Asp Net Core 🧐<a name="asp-core"></a>
Lastly, Asp .Net Core is also a cross-platform, open source framework for developing web applications using the .Net languages, mainly C#, Asp .Net ~~Core~~ (No need for core any more), is a high performance framework. By using Asp .Net, you can build various types of projects, like back-ends for desktop/mobile apps, Single Page Applications **SPAs**, and much more.

Oh, in case you didn't know, ASP stands for **A**ctive **S**erver **P**ages.

And Bob's your uncle.
Hopefully that clears all of those ambiguous terms and fuzzy words, I tried my best to keep it as simple as possible, if all of that got you interested in the world of .Net, I have a bunch of others posts relating to .Net and C#, you can give them a go!

## Bye for now 👋🏻