.NET Core,.NET Framework和Xamarin有什么区别?

微软现在在其.NET系列中有.NET Core,.NET Framework和Xamarin(Mono)。

这里似乎有很多重叠。 这些types的.NET有什么区别? 什么时候应该select在我的项目中使用.NET Core而不是.NET Framework或Xamarin?

根据这里的文档,您应该在下面的6个典型场景中使用.NET Core而不是.NET Framework或Xamarin。

1.跨平台的需求

显然,如果你的目标是要有一个应该可以跨平台(Windows,Linux和MacOS)运行的应用程序(Web /服务),.NET生态系统的最佳select是使用.NET Core作为其运行时(CoreCLR )和库是跨平台的。 另一种select是使用Mono项目。

这两种select都是开放源代码的,但是.NET Core直接得到了微软的正式支持,将会有大量的投资。

在跨平台使用.NET Core的情况下,使用Visual Studio IDE在Windows上存在最佳开发体验,该IDE支持项目pipe理,debugging,源代码pipe理,重构,包括Intellisense在内的丰富编辑,testing等诸多生产特性。 但在Mac,Linux和Windows上使用Visual Studio Code支持丰富的开发,包括智能感知和debugging。 即使像Sublime,Emacs,VI等第三方编辑也能很好地工作,并且可以使用开源的Omnisharp项目获得编辑器的智能感知。

2.微服务

当您构build一个由多个独立的,可dynamic扩展的,有状态的或无状态的微服务组成的面向微服务的系统时,您在这里获得的巨大优势是您可以在微服务级别使用不同的技术/框架/语言。 这使您可以在系统中的每个微小区域使用最佳的方法和技术,因此如果要构build性能卓越且可扩展的微服务,则应该使用.NET Core。 最终,如果您需要使用与.NET Core不兼容的任何.NET Framework库,则不存在任何问题,您可以使用.NET Framework构build该微服务,并且将来可以用.NET替代它。核心。

您可以使用的基础架构平台很多。 理想情况下,对于大型和复杂的微服务系统,您应该使用Azure服务结构。 但是对于无状态的微服务,您还可以使用其他产品,如Azure应用服务或Azurefunction。

请注意,截至2016年6月,并非Azure中的每项技术都支持.NET Core,但是现在.NET Core已经RTM发布,Azure中的.NET Core支持将大幅增加。

3.最佳的高性能和可扩展的系统

当您的系统需要尽可能好的性能和可扩展性时,无论您拥有多less用户,都可以获得最佳的响应能力,这就是.NET Core和ASP.NET Core的真正亮点。 用相同数量的基础架构/硬件可以做的事情越多,您将以更低的成本获得更丰富的体验。

摩尔的单CPU性能改进日子已经不再适用了, 但是当你的系统不断发展的时候,你需要做更多的事情,并且需要更高的可扩展性和性能,以满足日益增长的用户数量的需求。 您需要获得更高的效率,无处不在的优化,并最终跨群集的机器,虚拟机和CPU内核进行扩展。 这不仅仅是用户满意的问题, 它也可以在成本/ TCO方面产生巨大的差异。 这就是为什么争取性能和可扩展性至关重要的原因。

如前所述,如果你可以把你的系统的小块作为微服务或其他松散耦合的方法进行隔离,那么将会更好,因为你不仅能够独立地发展每一个小块/微服务,而且能够有更好的长期敏捷性和维护,而且如果您需要做的是与.NET Core不兼容,您将能够在微服务级别使用任何其他技术。 最终你可以重构它,并尽可能将它带到.NET Core。

4.针对Mac,Linux或Windows的命令行风格开发。

使用.NET Core时,此方法是可选的。 当然,您也可以使用完整的Visual Studio IDE。 但是如果你是一个想用轻量级编辑器开发并大量使用命令行的开发者,.NET Core就是为CLIdevise的。 它在所有支持的平台上提供简单的命令行工具,使开发人员能够在开发人员,实验室或生产机器上以最小的安装量构build和testing应用程序。 像Visual Studio Code这样的编辑使用相同的命令行工具来获得他们的开发经验。 像Visual Studio这样的IDE使用相同的CLI工具,但隐藏在一个丰富的IDE体验背后。 开发人员现在可以select他们想要与从CLI到编辑器到IDE的工具链进行交互的级别。

5.需要每个应用程序级别的.NET版本的并行。

如果您希望能够在.NET中安装具有不同版本的框架的应用程序,则需要使用如本文档前面所述的100%并排提供的.NET Core。

6. Windows 10 UWP .NET应用程序。

另外,你也可以阅读:

  1. 什么时候应该使用.NET Core?
  2. 什么时候应该使用.NET Framework 4.x而不是.NET Core?
  3. 什么时候应该使用Xamarin而不是.NET Core?

这就是微软解释它的方式:

.NET Framework,.NET Core,Xamarin

.NET Framework是随Windows分发的.NET的“完整”或“传统”味道。 在构build桌面Windows应用程序或使用ASP.NET 4.6+时使用此function。

.NET Core是在Windows,Mac和Linux上运行的跨平台.NET。 当你想构build可以在任何平台上运行的应用程序(包括Docker容器)时使用它。

Xamarin用于构build可在iOS,Android或Windows Phone设备上运行的移动应用程序。

Xamarin通常运行在Mono之上,这是在Microsoft决定正式与.NET Core进行跨平台之前为跨平台支持而构build的一个.NET版本。 和Xamarin一样,Unity平台也在Mono之上运行。

一个常见的混淆之处就是ASP.NET Core所处的位置。ASP.NET Core可以在.NET Framework或.NET Core上运行,详见本答案 。