.NET Core, .NET Framework和Xamarin之间的区别是什么?

微软现在拥有。net Core、。net Framework和Xamarin (Mono)。

这里似乎有很多重叠。这些类型的。net平台有什么不同?什么时候我应该选择在我的项目中使用。net Core,而不是。net Framework或Xamarin?

211458 次浏览

微软是这样解释的:

。.NET Framework, .NET Core, Xamarin .NET Framework

net框架是随Windows发布的。net的“完整”或“传统”版本。当您正在构建桌面Windows或UWP应用程序,或使用旧的ASP。NET 4.6 +。

net核心是在Windows、Mac和Linux上运行的跨平台。net。当你想要构建可以在任何平台上运行的控制台或web应用程序时,包括在Docker容器中。目前还不包括UWP/桌面应用程序。

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

Xamarin通常运行在莫诺之上,这是在微软决定正式使用。net Core跨平台之前为跨平台支持而构建的。net版本。与Xamarin一样,Unity平台也运行在Mono之上。


一个常见的混淆点是ASP。NET Core很适合。ASP。NET Core可以运行在。NET Framework (Windows)或。NET Core(跨平台)之上,详见这个答案: ASP. NET Core与。NET Framework之间的区别。NET Core(。NET Core)和ASP。NET Core(。净框架) < / > < / p >

你应该使用。net Core,而不是。net Framework或Xamarin,根据文档在这里在以下6个典型场景。

1. 跨平台的需要

显然,如果你的目标是让一个应用程序(web/服务)能够跨平台运行(Windows、Linux和MacOS),在。net生态系统中最好的选择是使用。net Core作为运行时(CoreCLR),库是跨平台的。另一种选择是使用Mono项目。

这两种选择都是开源的,但是。net Core是由微软直接和官方支持的,并且将有大量的投资向前推进。

当跨平台使用。net Core时,最好的开发体验存在于Windows的Visual Studio IDE上,它支持许多生产力特性,包括项目管理、调试、源代码控制、重构、富编辑(包括智能感知)、测试等等。但是在Mac、Linux和Windows上使用Visual Studio Code也支持丰富的开发,包括智能感知和调试。甚至第三方编辑器,如Sublime, Emacs, VI和更多工作得很好,可以使用开源omnissharp项目获得编辑器智能感知。

2. Microservices

当你构建一个面向微服务的系统时,它由多个独立的、动态伸缩的、有状态的或无状态的微服务组成,你拥有的最大优势是你可以在一个微服务级别上使用不同的技术/框架/语言。这允许你在你的系统的每个微区域使用最好的方法和技术,所以如果你想要构建非常高性能和可扩展的微服务,你应该使用。net Core。最终,如果你需要使用任何与。net Core不兼容的。net Framework库,这是没有问题的,你可以用。net Framework来构建微服务,将来你可能会用。net Core来代替它。

您可以使用的基础设施平台有很多。理想情况下,对于大型复杂的微服务系统,您应该使用Azure Service Fabric。但是对于无状态微服务,你也可以使用其他产品,比如Azure应用服务或Azure函数。

请注意,截至2016年6月,并不是Azure中的每一项技术都支持。net Core,但是随着。net Core的RTM发布,Azure中的。net Core支持将急剧增加。

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

当你的系统需要最好的性能和可伸缩性时,无论你有多少用户,你都能得到最好的响应能力,那么。net Core和ASP。NET Core真的很出色。在相同数量的基础设施/硬件上,你能做的越多,你就能以更低的成本为最终用户提供更丰富的体验。

摩尔定律对单个cpu的性能改进已经不再适用;然而,当您的系统不断增长时,您需要做更多的工作,并且需要更高的可伸缩性和性能,以满足日益增长的用户需求。最终,您需要提高效率,在所有地方进行优化,并在机器集群、vm和CPU核心之间更好地扩展。这不仅仅是用户满意度的问题;它还可以在成本/TCO方面产生巨大的差异。这就是为什么努力提高性能和可伸缩性是很重要的。

如前所述,如果你可以将系统的小部分分离为微服务或任何其他松耦合的方法,这将会更好,因为你不仅可以独立地发展每个小部分/微服务,并拥有更好的长期敏捷性和维护,而且如果你需要做的事情与. net Core不兼容,你还可以在微服务级别上使用任何其他技术。最终你可以重构它,并在可能的时候把它带到。net Core中。

4. 适用于Mac、Linux或Windows的命令行风格开发。

在使用. net Core时,这种方法是可选的。当然,您也可以使用完整的Visual Studio IDE。但是如果你是一个希望使用轻量级编辑器和大量使用命令行进行开发的开发人员,. net Core是为CLI设计的。它提供了在所有受支持的平台上可用的简单命令行工具,使开发人员能够在开发人员、实验室或生产机器上使用最少的安装来构建和测试应用程序。像Visual Studio Code这样的编辑器使用相同的命令行工具来获得开发体验。IDE和Visual Studio使用相同的CLI工具,但将它们隐藏在丰富的IDE体验后面。开发人员现在可以选择他们想要与工具链交互的级别,从CLI到编辑器再到IDE。

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

如果你想在。net中安装依赖于不同版本框架的应用程序,你需要使用。net Core,它提供了本文档前面解释的100%并行。

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

此外,你可能还想阅读:

  1. 什么时候我应该使用。net核心?< / >
  2. 什么时候我应该仍然使用。net Framework 4。x,而不是。net Core?< / >
  3. 什么时候我应该使用Xamarin,而不是。net Core?< / >

你可以在这一行引用- ASP。NET Core(。NET Core)和ASP。NET Core(。净框架)

。.NET Framework, .NET Core, Xamarin .NET Framework

Xamarin的根本不是一场辩论。当您想要使用c#构建移动(iOS, Android和Windows mobile)应用程序时,Xamarin是您的唯一选择。

.NET框架支持Windows和Web应用程序。今天,您可以使用Windows Forms、WPF和UWP在. net Framework中构建Windows应用程序。ASP。NET MVC用于在.NET Framework中构建Web应用程序。

net核心是一个新的开源和跨平台框架,用于为所有操作系统(包括Windows、Mac和Linux)构建应用程序。仅限NET Core。UWP用于构建Windows 10目标Windows和移动应用程序。ASP。NET Core用于构建基于浏览器的web应用程序。

你想要更多的细节参考这个链接
https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://learn.microsoft.com/en-us/dotnet/articles/standard/choosing-core-framework-server < / p >

. net Core是你现在应该使用的。net的当前版本(更多的特性,修复的bug,等等)

Xamarin是一个提供用c#编写的跨平台移动问题解决方案的平台,所以你不需要在IOS和Android上单独使用Swift。

  1. net是基于c#语言的生态系统
  2. net标准net生态系统的标准(换句话说,规范)。

net核心类库建立在net标准. Core类库之上。 . net标准你只能创建不能独立执行的类库项目,并且应该被另一个.NET Core或 net框架可执行项目引用。如果你想实现一个可移植到net框架net核心Xamarin的的库,选择net标准

  1. net框架是一个基于net的框架,它支持Windows和Web应用程序

(你可以使可执行项目(如控制台应用程序,或ASP。NET应用程序)使用。NET框架

  1. ASP。网是一种基于net框架的web应用程序开发技术
  2. net核心也是一个基于net的框架。

它是一个新的开源和跨平台框架,可以为包括Windows、Mac和Linux在内的所有操作系统构建应用程序。

  1. Xamarin的是一个使用c#开发跨平台移动应用程序(iOS, Android和Windows Mobile)的框架
net标准(蓝色)的实现支持和完全支持.NET标准的最小可行平台(最新:[https://learn.microsoft.com/en-us/dotnet/standard/net-standard net-implementation-support]) . < / p >

net 5将是所有。net变体的统一版本,将于2020年11月推出,因此不再需要在变体之间进行选择。 enter image description here < / p >

Xamarin用于手机应用程序(IOS/Android)。. net Core用于设计可以在Apache和IIS上运行的Web应用程序。

这就是两句话的区别。

  • . net框架——微软的. net遗留的Windows实现。2002年引进,逐步淘汰。
  • . net 5 (. net Core 3.1的继承者)——旨在取代。net框架的现代重新实现,支持Windows、macOS和Linux。2016年推出的新版本可能会吸收Xamarin
  • Xamarin - Mono与非windows操作系统和api的平台绑定,以及为移动应用程序开发量身定制的工具(iOS, Android和最近的桌面)。2012年推出。Mono是由社区开发的。net的非微软实现,于21世纪初引入,与。net Framework竞争。
< p >。Net Frame工作用于windows基础应用程序。 . net核心框架工作用于跨平台基础应用程序。 Xamarin框架工作用于移动应用程序开发
  1. < p >。Net Framework(最新版本4.8)只支持windows平台。意味着您的桌面应用程序只能在Windows上工作。web应用程序只能托管在Windows Server/Windows操作系统上

  2. <李> < p >。Net Core(从。Net Core 1, 2, 2.1, 3.1,最新版本5开始)是交叉的 平台。(windows, Linux, Mac).

  3. 另一方面,Xamarin支持移动平台。(Android和IOS)。用于开发移动应用程序。

[截至2022年2月]

net框架

  • 专有的框架
  • 主要适用于Windows操作系统
  • 4.8版本是它的最终版本。
  • 对它的支持可能会在Windows 10中结束(并且它是其他服务器的兄弟姐妹)

net (以前的。net Core)

  • 免费开源
  • 跨平台的
  • net框架的继承者
  • 目前net 6是LTS版本

Xamarin的

  • 免费开源
  • 用于使用。net和c#构建Android和iOS应用程序
  • .NET的一部分