Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';.NETCore、.NETFramework和Xamarin之间的区别是什么?_.net_Xamarin_.net Core - Fatal编程技术网

什么';.NETCore、.NETFramework和Xamarin之间的区别是什么?

什么';.NETCore、.NETFramework和Xamarin之间的区别是什么?,.net,xamarin,.net-core,.net,Xamarin,.net Core,微软现在在其家族中拥有.NETCore、.NETFramework和Xamarin(Mono) 这里似乎有很多重叠。这些类型的.NET平台之间有什么区别?什么时候我应该选择在我的项目中使用.NET Core,而不是.NET Framework或Xamarin?Microsoft就是这样解释的: .NET Framework是与Windows一起发布的.NET的“完整”或“传统”风格。当您构建桌面Windows或UWP应用程序,或使用较旧的ASP.NET 4.6+时,请使用此选项 .NET核心是

微软现在在其家族中拥有.NETCore、.NETFramework和Xamarin(Mono)


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

Microsoft就是这样解释的:

.NET Framework是与Windows一起发布的.NET的“完整”或“传统”风格。当您构建桌面Windows或UWP应用程序,或使用较旧的ASP.NET 4.6+时,请使用此选项

.NET核心是在Windows、Mac和Linux上运行的跨平台.NET。当您想要构建可以在任何平台(包括Docker容器内部)上运行的控制台或web应用程序时,请使用此选项。这目前不包括UWP/桌面应用程序

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

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



一个常见的混淆点是ASP.NET核心在哪里。ASP.NET Core可以运行在.NET Framework(Windows)或.NET Core(跨平台)之上,如以下回答所述:

根据文档,在以下6种典型场景中,您应该使用.NET Core,而不是.NET Framework或Xamarin

1.跨平台需求 显然,如果您的目标是使应用程序(web/服务)能够跨平台(Windows、Linux和MacOS)运行,.NET生态系统中的最佳选择是使用.NET Core作为其运行时(CoreCLR),并且库是跨平台的。另一种选择是使用Mono项目

这两种选择都是开源的,但是.NETCore直接得到了微软的官方支持,今后将有大量投资

跨平台使用.NET Core时,最好的开发体验是在Windows上使用Visual Studio IDE,它支持许多生产功能,包括项目管理、调试、源代码控制、重构、丰富的编辑(包括Intellisense)、测试等。但在Mac、Linux和Windows上使用Visual Studio代码(包括intellisense和调试)也支持丰富的开发。即使是第三方编辑器,如Sublime、Emacs、VI等,也可以很好地工作,并可以使用开源Omnisharp项目获得编辑器intellisense

2.微服务 当您构建一个由多个独立的、动态可伸缩的、有状态的或无状态的微服务组成的面向微服务的系统时,这里的最大优势是您可以在微服务级别使用不同的技术/框架/语言。这使您能够在系统中的每个微区域使用最佳方法和技术,因此,如果您想要构建高性能和可扩展的微服务,您应该使用.NET Core。最后,如果您需要使用任何与.NET Core不兼容的.NET Framework库,那么没有问题,您可以用.NET Framework构建该微服务,将来您可能可以用.NET Core替换它

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

请注意,截至2016年6月,并非Azure中的所有技术都支持.NET Core,但随着.NET Core的RTM发布,Azure中的.NET Core支持将显著增加

3.性能最佳且可扩展的系统 当您的系统需要尽可能最好的性能和可扩展性,以便无论有多少用户都能获得最佳响应时,.NET Core和ASP.NET Core才是真正的亮点。使用相同数量的基础设施/硬件,您能做的越多,最终用户的体验就越丰富–成本越低

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

如前所述,如果您可以将系统的小部分隔离为微服务或任何其他松散耦合的方法,这将更好,因为您不仅能够独立地发展每个小部分/微服务,而且具有更好的长期灵活性和维护能力,但是,如果您需要做的事情与.NETCore不兼容,您还可以在微服务级别使用任何其他技术。最终,您将能够重构它,并在可能的情况下将其带到.NETCore

4.Mac、Linux或Windows的命令行风格开发。 使用.NET内核时,此方法是可选的。当然,您也可以使用完整的VisualStudioIDE。但是,如果您是一名希望使用轻量级编辑器和大量使用命令行进行开发的开发人员,.NET Core是为CLI设计的。它提供了可在所有受支持平台上使用的简单命令行工具,使开发人员能够在开发人员、实验室或生产机器上以最少的安装量构建和测试应用程序。像VisualStudioCode这样的编辑器使用相同的命令行工具进行开发。IDE与VisualStudio一样使用相同的CLI工具,但将它们隐藏在丰富的IDE体验背后。开发人员现在可以