.NET Ecosystem
Tags: dotnet, framework, beginners, core
Published: 2022-11-22 12:53:53


![.NET Ecosystem] (https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8demjaliua1316v9vkwh.png)

.NET Ecosystem is quite vast, and it is difficult to comprehend certain times where all the systems fit in. In my first article here, I will attempt to simplify the details and hope you like it.

All of us either worked/heard/used applications of different variants (Mobile, Web, Cloud, Games, Desktop, Console, Services and so on in Microsoft or other Platforms over the years. .NET provides capabilities to develop and ship them to end users, which we could call it as the ecosystem)

---

**.NET Framework** is the Foundation of the Ecosystem and the first to be introduced by Microsoft around early 2002. It encompasses the following,

- **Common Language Infrastructure** (CLI) which is basically a neutral platform for application development and execution irrespective of the Programming language that.NET supports (C#, VB.NET, F#...) …So basically, contains Language constructs that support this behavior.

- **Framework Class Library** (FCL) that provides pre-defined set of Core Functions, Tools and Libraries which Developers can use to develop their applications.

- Execution Engine of .NET Framework (**“CLR or Common Language Runtime”**) which executes the .NET applications at the target system. It happens in 2 steps

1. Language code is compiled into an Intermediate code (MSIL) during build/compile time.

2. During the execution of the application, the Just in Time (JIT) compiler turns the IL code into Machine readable code... (Sample **hello world** program is demonstrated below...here we can see how .NET source is compiled to Intermediate code by compilers and then at runtime machine specific code is generated through JIT)


![.NET Compilation](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r3zdgqid8wmukvdi5r3u.png)
(Refer the **ildasm** disassembler as part of .NET VS tools so see your IL code)
Do checkout the URL Link for more options to work on the tool
{% embed https://learn.microsoft.com/en-us/dotnet/framework/tools/ildasm-exe-il-disassembler %}

(**.NET Framework 4.8** is the Latest version from this edition and planned for longer support.)

---

**.NET Core** is an improvement over the .NET Framework, where-in the idea behind is to provide cross platform support for other operating systems (for Linux and MacOS) and make it open source so that it reaches wider developer audience and allows developing modern applications. Basically, Microsoft has decoupled the .NET Framework from windows-based and created the Core as generic platform. Now the .NET apps can run in containers on Linux and other places. It encompasses the following

- **CoreCLR** which is similar to what CLR does for .NET Framework with much bigger canvas of execution environment across platforms.

- **CoreFX** which gets the roots of the FCL from .NET Framework and provide add-on libraries on top of that to support varied platforms and application categories.

- **Nuget** the Package Manager introduced in Core and supports sharing of reusable code libraries…It also aids in getting latest updates/revisions of software. Developed as an SAS by .NET foundation and promoted as open source.

Better to check out the link [core framework] (https://dotnet.microsoft.com/en-us/download/dotnet) for various .NET versions currently active and in for LTS (Long term support) 

---

**.NET Standard** at the basic level is a bridge for the libraries used in (.NET Framework, .NET Core, Unity, XAMARIN and so on...). So basically, a conformance path where-in the interoperability between applications built in.NET framework and other .NET variants could be maintained.
**.NET Standard (2.1) ** is the Latest version.
Till .NET Standard (2.0) version, it is observed to be most supportive of.NET framework versions (till 4.8) but in.NET Standard (2.1) or later, the.NET takes its own deviation in terms of specifications for.NET 5 or later and it’s not part of Standard 2.1.

---
**Tools** Regular and repetitive tasks of developers such as development, configuration, analysis, testing and deploying is supported through the **VS (Visual Studio) ** Code editor with range of embedded tools...This broadly reduces the time to look outwards and be more productive.

- **Code Editing**
    1. Intellisense that gives suggestions/recommendations for API 
       access, helps to avoid syntactical errors and aid code 
       completion.
    2. Automatic code generations through shortcuts and support 
       for macros.
    3. Other interactive options such as (Indentations, Outlining, 
       bookmarking, snippets and direct code run/debug operations 
       and so on...)
- **Code Integration** with GIT Repos (Developers can create local repositories to maintain code and also sync up with remote repository through VS... hugely helps to be consistent.

- **Exploring**(VS provides Exploring/connecting to external databases in Remote servers or in Cloud, Solution explorers to maintain different Projects, Test Explorers to configure and maintain Test codes and other exploring options to enhance code productivity)

- **Shell/Command based** (Executing build scripts or deployment batches could be done faster through PowerShell/command lines)

.NET through VS gives an integrated approach right from Code production to deployment and maintenance and just aids the whole lifecycle of Software Development.
(VS Code...the open-source version of Visual Studio is lightweight and also supports array of programming languages.
Do checkout this link for knowing more
[VS Code](https://code.visualstudio.com) 

![VS tools] (https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3xv5mhrj6rkcbmxki8d.png)

Finally, Extending .NET across other platforms

- **Unity** is a Cross-platform gaming engine, that uses **Mono** (the open-source version of.NET framework based on ECMA standards) for their back-end scripting. Recently there seems to be a move-over to ILCPP by Unity. So, need to see how in coming times the adaptation of .NET in Unity/other Gaming platforms go through). To study more on Unity pls check out [Unity](https://unity.com)

- **UWP** (Universal windows platform) is a Windows only initiative that targets different devices (Windows PCs, Xbox, Surface, Holo Lens and others...developers can create apps and publish them on the windows store and get monetized as well...Check out the link for more details
[UWP] (https://learn.microsoft.com/en-us/windows/uwp)

- **Xamarin**, Yet another Cross platform Mobile framework from Microsoft. Xamarin was introduced to create native apps for Android, iOS & Windows using C#.NET. To get started check out [Xamarin](https://dotnet.microsoft.com/en-us/apps/xamarin/xamarin-forms)
successor to Xamarin, Multi-Platform App UI with focus on building native desktop and mobile Apps for cross platform…Kind of unifying multiple.NET technologies. Check out the Link for learning more on this [MAUI](https://learn.microsoft.com/en-us/dotnet/maui/what-is-maui?view=net-maui-7.0)

Tried to converge different parts of this .NET ecosystem only at basic level and there is much more to explore.

hope it helps and do share your suggestions!