.Net implementations (Framework / Core) - A mindmapping
Tags: csharp, dotnet
Published: 2020-08-18 17:07:05

💢 It is not always an easy task to find your way back into Microsoft .Net implementations.  

👉 I hope this mindmap can help you to quickly visualize the big picture :

[![Net-implementations.th.png](https://s7.gifyu.com/images/Net-implementations.png)](https://s7.gifyu.com/images/Net-implementations.png)

Mindmap : https://www.xmind.net/embed/A3HWW3
*(up to date 2020-08)*



# [.NET Standard](https://docs.microsoft.com/en-us/dotnet/standard/components#net-standard)  

One word about .Net Standard :
* .NET Standard is not an implementation of .NET
* it is an API specification common to all implementations of .NET 
* it enables portability across different .NET implementations (.Net Framework, .Net Core, Mono, UWP and Xamarin)  

# [.NET implementations](https://docs.microsoft.com/en-us/dotnet/standard/components#net-implementations)  

*(from Microsoft official documentation)*  

A .NET app is developed for and runs in one or more implementations of .NET

---

## [.NET Framework](https://docs.microsoft.com/en-us/dotnet/framework/)  

The original .NET implementation that has existed since 2002. .NET Framework 4.8 is out and announced to be its last one.

Use .NET Framework for your server application when:
- Your app currently uses .NET Framework (recommendation is to extend instead of migrating)
- Your app uses third-party .NET libraries or NuGet packages not available for .NET Core
- Your app uses .NET technologies that aren't available for .NET Core


### [Console Applications](https://docs.microsoft.com/en-us/dotnet/standard/building-console-apps)  
A program designed to be used via text-only computer interface

### [Windows Forms](https://docs.microsoft.com/en-us/dotnet/framework/winforms/)
To create Windows-based applications

### [Windows Presentation Foundation (WPF)](https://docs.microsoft.com/en-us/dotnet/framework/wpf/)
To create Windows-based applications using a resolution-independent and vector-based rendering engine

### [ASP.NET](https://docs.microsoft.com/en-us/aspnet/overview)  
A web framework for building websites and web applications using HTML, CSS, and JavaScript

| [ASP.NET MVC](https://dotnet.microsoft.com/apps/aspnet/mvc) | [ASP.NET Web Apps](https://dotnet.microsoft.com/apps/aspnet/web-apps) | [ASP.NET Web APIs](https://dotnet.microsoft.com/apps/aspnet/apis)
| --- | --- | ---
| To build web apps using the Model-View-Controller design pattern | Build full stack web apps with HTML, CSS, JavaScript, and C# | Build secure REST APIs on any platform with C#

### [Windows Service Applications](https://docs.microsoft.com/en-us/dotnet/framework/windows-services/introduction-to-windows-service-applications)  
To create long-running executable applications that run in their own Windows sessions (app that is installed as a service)

### [Windows Communication Foundation (WCF)](https://docs.microsoft.com/en-us/dotnet/framework/wcf/)  
A unified programming model for building service-oriented applications

### [Windows Workflow Foundation](https://docs.microsoft.com/en-us/dotnet/framework/windows-workflow-foundation/)  
An in-process workflow engine

---
## [.NET Core](https://docs.microsoft.com/en-us/aspnet/core/?view=aspnetcore-3.1)  
A cross-platform implementation of .NET . Use it for your server application when :
- you have cross-platform needs
- you are targeting microservices
- you are using Docker containers

Usefull links :
- how to port [from .NET Framework to .NET Core](https://docs.microsoft.com/en-us/dotnet/core/porting/)
- [Windows Compatibility Pack](https://docs.microsoft.com/en-us/dotnet/core/porting/windows-compat-pack)


### [ASP.NET Core](https://docs.microsoft.com/en-us/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-3.1)  
A cross-platform, high-performance, open-source framework for building web apps and services, Internet of Things (IoT) apps, and mobile backends  

[Razor](https://docs.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-3.1&tabs=visual-studio) is a programming syntax used to create dynamic web pages with C#

| [ASP.NET Core MVC](https://docs.microsoft.com/en-us/aspnet/core/mvc/overview?view=aspnetcore-3.1) | [ASP.NET Core Blazor](https://docs.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-3.1)
| --- | --- |
| To build web apps and APIs using the Model-View-Controller design pattern | A framework for building client-side web UI with C#

#### [> Blazor WebAssembly](https://docs.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-3.1#blazor-webassembly)  
A single-page app framework for building interactive client-side web app using WebAssembly (an open web standard)

#### [> Blazor Server](https://docs.microsoft.com/en-us/aspnet/core/blazor/?view=aspnetcore-3.1#blazor-server)  
Decouples component rendering logic. Blazor Server host Razor components on the server in an ASP.NET Core app. UI updates are handled over a SignalR connection.

### [*(Windows Forms)*](https://docs.microsoft.com/en-us/dotnet/core/porting/winforms)  
To migrate Windows Forms apps to .NET Core

### [*(Windows Presentation Foundation (WPF))*](https://docs.microsoft.com/en-us/dotnet/desktop-wpf/migration/convert-project-from-net-framework)  
To migrate WPF apps to .NET Core