.NET Framework 和 .NET Core 是微软开发的两个不同的软件框架,它们都提供了一组广泛的库和API,用于开发Windows、Web和服务器应用程序。.NET Framework 仍然会接收安全更新和一些必要的支持,但不会添加新的功能。微软推荐开发者使用.NET Core或其后继者.NET 5及更高版本进行新项目的开发。

1、.NET 生态系统

.NET生态系统由多个组件构成,包括运行时(如.NET Framework、.NET Core、Mono)、编程语言(C#、F#、VB.NET)、工具和SDK(如Visual Studio、.NET CLI)、以及大量的库和框架(如ASP.NET、Entity Framework、Xamarin用于移动开发)。这个生态系统支持从简单的桌面程序到复杂的云基础设施的开发,满足不同类型的编程需求和应用场景。NET生态系统结构图如下,


NET生态系统主要包括三大高级组件,.NET Framework, .NET Core, and Xamarin。

1)Xamarin

Xamarin最适合那些希望使用.NET生态系统和C#开发跨平台移动应用程序的企业和开发者。对于需要同时在iOS、Android和Windows上提供高性能、原生感觉应用程序的项目,Xamarin提供了一个高效、成本效益高的解决方案。 

2).NET Framework

.NET Framework 是微软推出的一个应用程序开发框架,最早于2002年发布。它提供了一套广泛的类库(称为Framework Class Library,FCL),使开发者能够创建Windows桌面应用程序、Web服务和其他类型的应用程序。.NET Framework 的一个核心组件是公共语言运行库(Common Language Runtime,CLR),它负责程序执行、内存管理、线程管理、垃圾回收等。支持Windows和Web应用程序。可以使用Windows窗体,WPF和UWP在.NET Framework中构建Windows应用程序。ASP.NET MVC用于在.NET Framework中构建Web应用程序。

3).NET Core 和 .NET 5+

随着云计算和移动计算的兴起,跨平台开发的需求日益增加。为了适应这一变化,微软推出了.NET Core,这是一个开源、跨平台的框架,旨在支持Windows、Linux和macOS上的应用程序开发。.NET Core 的设计更加模块化,可以让应用程序仅包含所需的组件,从而减小部署尺寸并提高性能。.NET Core仅支持UWP和ASP.NET Core。UWP用于构建Windows 10目标Windows和移动应用程序。ASP.NET Core用于构建基于浏览器的Web应用程序。 

.NET 5 是微软推出的下一代.NET,标志着.NET Core 和 .NET Framework 的合并。从.NET 5开始,微软不再区分“.NET Core”和“.NET Framework”,而是提供一个统一的平台,支持所有类型的.NET应用程序开发,包括桌面应用程序、Web应用程序、云服务和移动应用程序。.NET 5及其后续版本(如.NET 6、.NET 7等)继续沿用.NET Core的开源和跨平台特性,同时引入了更多的性能改进和功能增强。

2、平台选择

.NET生态系统是一个广泛的开发平台,由微软创建,用于构建各种类型的应用程序,包括Web、移动、桌面、游戏和物联网(IoT)应用程序。选择合适的.NET平台主要取决于你的项目需求、目标平台、性能考虑和团队技能。

1).NET Core

.NET Core是一个开源、跨平台的.NET实现,适用于构建现代的、云基础的、互联网连接的应用程序,包括Web应用程序、微服务、工具和控制台应用。.NET Core特别适合那些需要在Windows、Linux和MacOS上运行的应用程序。

2).NET Framework

.NET Framework是用于Windows应用程序的原始.NET实现。它支持构建Web、服务、桌面应用程序和更多。由于它只在Windows上运行,它特别适合那些专注于构建或维护Windows平台应用程序的项目。

3)Xamarin/Mono

Xamarin/Mono用于构建跨平台的移动应用程序,使开发者能够使用.NET和C#来创建iOS、Android和Windows应用程序。Xamarin是那些希望共享代码库并在多个移动平台上提供原生应用体验的项目的理想选择。

4)Blazor

Blazor是一个使用.NET构建交互式Web UI的框架。Blazor允许开发者使用C#而不是JavaScript来构建Web前端应用程序。这对希望将.NET生态系统扩展到Web前端开发的团队来说是一个吸引人的选择。

5)ASP.NET Core

ASP.NET Core 是用于构建现代、高性能的Web应用程序和服务的框架。ASP.NET Core可以在.NET Core上运行,支持跨平台部署,适用于构建企业级Web应用程序。

6)UWP 

UWP (Universal Windows Platform) 用于构建在所有Windows 10设备上运行的应用程序,包括PC、平板电脑、手机、Xbox和HoloLens。UWP是为了提供跨Windows设备的一致用户体验而设计的。

需求或场景推荐的.NET平台
需要高性能稳定,没有UI界面.NET Core (性能更好,支持Docker容器)
命令行上的大量操作.NET Core (支持得更好)
有跨平台的需求.NET Core
使用微服务.NET Core (为当下需求而设计)
以用户界面为中心的Web应用程序.NET Framework (直到.NET Core赶上之前)
使用Windows窗体和WPF的Windows客户端应用程序.NET Framework (已有预先配置的环境和系统)
需要马上构建布署稳定的版本.NET Framework (更成熟)
存在经验丰富的.Net团队,但时间不是问题,实验是可以接受的,不急于部署.NET Core (是.NET的未来,有学习曲线)

将.NET应用程序移植到.NET Core

下面文档,解释了将.NET框架应用程序移植到.NET Core的过程。

https://docs.microsoft.com/en-us/dotnet/articles/core/porting/index  

注意:并非所有.NET框架应用程序都可以移植到.NET Core。

参考文档:

推荐文档