Introduction of the .NET Framework
Microsoft announced in 2002 a single framework for developing apps in any programming language.
The framework provided a standardized API set, language independence, and compatibility with the underlying operating system and other non-.NET programs.
Despite the long-term goal of making .NET a cross-platform framework, the .NET Framework was exclusively available for Windows.
Introduction of the Mono Project
Microsoft released the Common Language Infrastructure (CLI) standards.
This implies that the .NET Framework runtime and the C# programming language become open standards, allowing anybody to implement the .NET runtime and C# programming language.
This helped pave the path for the Mono Project to migrate .NET to Linux in 2007.
The Mono Project drew a lot of attention and resulted in a production-ready framework. However, because of some restrictive Windows constraints, not everything in the .NET Framework could be migrated to Mono.
Introduction of the .NET Compact Framework and Xamarin
Microsoft also launched the .NET Compact Framework at the same time as the .NET Framework.
It was a scaled-down version of the .NET Framework intended to operate on devices with low computational power.
In order to have a more efficient version of the .NET Compact Framework that could also run on the hardware directly, Microsoft introduced the .NET Micro Framework in 2007.
Silverlight also introduced .NET to the browser, giving developers a foundation for creating sophisticated web applications the same year.
The MonoTouch project began in 2009. It tried to port to iOS and Android using the Mono framework, which is the Linux equivalent of the .NET Framework.
In 2013, the MonoTouch project served as the foundation for Xamarin, a platform for developing Android and iOS apps in the C# programming language.
The .NET Ecosystem expanded with the launches of the .NET Framework, the Mono Project, the .NET Compact Framework, and Xamarin, allowing the development of apps for Windows and Linux computers, embedded devices, the web, and iOS and Android mobile phones.
At this point, it can be said that Microsoft has fulfilled its cross-platform ambitions by utilizing several environments. However, the creation of applications in many environments became a challenge for library developers.
A .NET assembly can be loaded in any .NET runtime, but it can fail at any time if it calls an API that isn't supported by the platform it's running on. As a result, Microsoft's long-term goal of making .NET a cross-platform framework has yet to be realized.
Redesigning the .NET Ecosystem - Introduction of the .NET Core
Microsoft began building .NET Core from the ground up in 2014 in order to fulfill the objective of a cross-platform development framework. It was initially made available in 2016.
The new framework was a total rewrite of the .NET standards with cross-platform compatibility in mind. Its runtime was compatible with Windows, Linux, and macOS.
Furthermore, unlike the .NET Framework, this new framework did not have backward compatibility limitations.
The .NET Basic framework was built with a modular architecture that supplied smaller copies of the framework's core components, allowing developers to download new components from the NuGet repository. As a consequence, deployment and portability were simplified.
Solving Potential Library Development Issues - Introduction of the .NET Standard
Microsoft established the .NET Standard to solve possible library development issues with the introduction of .NET Core.
It is a formal definition of .NET APIs that must be implemented by different .NET systems. .NET API sets are defined differently in different .NET Standard versions.
A .NET implementation specifies which .NET Standard version it supports in this manner.
The library developer must provide the Target Framework Moniker (TFM) in the .NET project file to target that specific .NET Standard version.
A Unified .NET Ecosystem - Introduction of the .NET 5
Microsoft released a new framework version that intends to unify the .NET platform in November 2020. This new version was called the .NET 5 framework.
.NET 5 does not require several implementations. It has a collection of APIs that are shared by Windows, Linux, Mac, iOS, and Android.
As a result, if your project is in .NET 5, your code will execute on all of those platforms. If you require the APIs of a certain platform, you should utilize a specific TFM.
.NET Standard is no longer required in .NET 5. .NET 5, on the other hand, is a working implementation rather than a formal specification.
.NET Notes to Remember
- The .NET Framework is still alive and operative. Its current version is 4.8, and it is the last version of the framework.
- The introduction of .NET 5 signals the end of the .NET Framework but does not replace it.
- .NET 5 does not replace .NET Standard.
- .NET 5 is the subsequent version of .NET Core 3.1.
- There is no .NET 4. Microsoft skipped this version to avoid confusion with .NET Framework 4.x.
- .NET will have no more Framework, Core, Compact, or Micro. It will have no other qualifier than just its version.