.NET核心、.NET框架和Xamarin之间有什么区别?

微软现在在其.NET家族中拥有.NET Core、.NET Framework和Xamarin(Mono)。

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

对该问题的评论 (1)
解决办法

根据文档[这里][1],你应该在以下6种典型情况下使用.NET核心,而不是.NET框架或Xamarin。

1.跨平台需求

显然,如果你的目标是拥有一个应该能够跨平台(Windows、Linux和MacOS)运行的应用程序(网络/服务),那么在.NET生态系统中的最佳选择是使用.NET Core,因为它的运行时(CoreCLR)和库是跨平台的。另一个选择是使用Mono项目。 这两种选择都是开源的,但.NET Core是由微软直接和官方支持的,并将在未来有大量的投资。 当跨平台使用.NET核心时,最好的开发体验存在于Windows上的Visual Studio IDE,它支持许多生产力功能,包括项目管理、调试、源码控制、重构、包括Intellisense的丰富编辑、测试等等。但在Mac、Linux和Windows上使用Visual Studio Code也支持丰富的开发,包括智能识别和调试。甚至像Sublime、Emacs、VI等第三方编辑器也能很好地工作,并且可以使用开源的Omnisharp项目获得编辑器的智能提示。

2.微服务

当你在构建一个由多个独立的、可动态扩展的、有状态或无状态的微服务组成的面向微服务的系统时,你在这里拥有的巨大优势是,你可以在微服务层面使用不同的技术/框架/语言。这允许你在系统中的每个微观领域使用最好的方法和技术,所以如果你想建立性能非常好、可扩展的微服务,你应该使用.NET Core。最终,如果你需要使用任何与.NET核心不兼容的.NET框架库,也没有问题,你可以用.NET框架构建该微服务,将来你可能会用.NET核心来替代它。 你可以使用的基础设施平台有很多。理想情况下,对于大型和复杂的微服务系统,你应该使用Azure Service Fabric。但对于无状态的微服务,你也可以使用其他产品,如Azure App Service或Azure Functions。 注意,截至2016年6月,Azure内并非每项技术都支持.NET Core,但现在.NET Core已经RTM发布,Azure中对.NET Core的支持将急剧增加。

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

当你的系统需要最好的性能和可扩展性,这样无论你有多少用户都能得到最好的响应,那么就是.NET Core和ASP.NET Core真正闪亮的地方。你能用同样数量的基础设施/硬件做得越多,你就能为你的终端用户提供更丰富的体验--而且成本更低。 单个CPU的摩尔定律性能改进的日子已经不适用了;但你需要做更多的事情,而你的系统正在增长,需要更高的可扩展性和性能,以满足日常更苛刻的用户,他们的数量正在成倍增长。你需要提高效率,优化所有地方,并在机器集群、虚拟机和CPU核心之间更好地扩展,最终。这不仅仅是一个用户满意度的问题;它也会在成本/TCO方面带来巨大的差异。这就是为什么要争取性能和可扩展性的重要原因。 如前所述,如果你能将你的系统的小部分隔离为微服务或任何其他松散耦合的方法,这将是更好的,因为你不仅能够独立发展每个小部分/微服务,并有更好的长期敏捷性和维护,而且如果你需要做的事情与.NET核心不兼容,你还能在微服务层面使用任何其他技术。而且最终你将能够重构它,并在可能的情况下把它带到.NET核心。

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

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

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

如果你希望能够在.NET中安装依赖不同版本框架的应用程序,你需要使用.NET核心,它提供了100%的并排,如本文件之前所解释的。

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

此外,你可能还想阅读。 1.什么时候不应该使用.NET核心? 2.什么时候我仍然应该使用.NET Framework 4.x,而不是.NET Core? 3. 3.什么时候应该使用Xamarin,而不是.NET Core? 3.

评论(5)

微软是这样解释的。

![.NET框架、.NET核心、Xamarin][1]

.NET框架是与Windows一起分发的"完整"或"传统"的.NET风味。当你建立一个桌面Windows或UWP应用程序,或使用旧的ASP.NET 4.6以上的应用程序时,请使用它。

.NET Core是跨平台的.NET,可以在Windows、Mac和Linux上运行。当你想建立可以在任何平台上运行的控制台或Web应用程序时,包括在Docker容器内,就可以使用它。目前这不包括UWP/桌面应用程序。

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

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


一个常见的混淆点是ASP.NET Core的位置。ASP.NET Core可以运行在.NET Framework(Windows)或.NET Core(跨平台)之上,详见此答案。ASP.NET Core(.NET核心)和ASP.NET Core(.NET框架)之间的区别

评论(6)

你可以在这一行参考 - https://stackoverflow.com/questions/37684508/difference-between-asp-net-core-net-core-and-asp-net-core-net-framework/37684644#37684644

![.NET框架,.NET核心,Xamarin][1]

Xamarin根本就不是一个辩论。当你想使用C#构建移动(iOS、Android和Windows Mobile)应用程序时,Xamarin是你唯一的选择。

.NET框架支持Windows和Web应用程序。如今,你可以在.NET框架中使用Windows Forms、WPF和UWP来构建Windows应用程序。ASP.NET MVC被用来在.NET框架中构建Web应用程序。

.NET Core是一个新的开源和跨平台的框架,可以为所有的操作系统(包括Windows、Mac和Linux)构建应用程序。.NET Core只支持UWP和ASP.NET Core。UWP用于构建针对Windows 10的Windows和移动应用程序。ASP.NET Core用于构建基于浏览器的Web应用程序。

如果您想了解更多细节,请参考以下链接 https://blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap/ https://docs.microsoft.com/en-us/dotnet/articles/standard/choosing-core-framework-server

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

&gt..Net核心类库是建立在.Net标准之上的。 .Net核心类库是建立在.Net标准之上的。 .NET标准你只能做出不能独立执行的类库项目,应该由另一个.NET Core或 .NET Framework可执行项目引用。如果你想实现一个可移植到.Net Framework.Net CoreXamarin的库,请选择.Net标准库。

  1. .NET框架是一个基于.NET的框架,它支持Windows和网络应用。

(你可以用.NET框架制作可执行的项目(如Console应用,或ASP.NET应用)

  1. ASP.NET是一种建立在.NET框架之上的网络应用程序开发技术
  2. .NET核心也是一个基于.NET的框架。

&gt.NET核心也是一个基于.NET**的框架。 它是新的开源和跨平台的框架,可以为包括Windows、Mac和Linux在内的所有操作系统构建应用程序。

  1. Xamarin是一个使用C开发跨平台移动应用(iOS、Android和Windows Mobile)的框架。

实现对.NET标准[blue]的支持和全面支持.NET标准的最低可行平台(最新。 [https://docs.microsoft.com/en-us/dotnet/standard/net-standard#net-implementation-support]) [![][1]][1]

[1]: https://i.stack.imgur.com/VtDdV.png

评论(2)

.NET Core是你现在应该使用的.NET当前版本(更多的功能,固定的bug等)。

Xamarin是一个为跨平台移动问题提供解决方案的平台,用C#编码,这样你就不需要为IOS单独使用Swift,Android也是如此。

评论(2)

2019年5月更新

你应该使用.Net Core 3.0和以后升级到其下一个版本.Net 5。 你所需要的只是一个统一的平台.Net5。

未来将只有一个.NET,你将能够使用它来针对>Windows、Linux、macOS、iOS、Android、tvOS、watchOS和WebAssembly等。 https://devblogs.microsoft.com/dotnet/introducing-net-5/

评论(1)