微软现在在其.NET系列中拥有.NET Core,.NET Framework和Xamarin(Mono)。
这里似乎有很多重叠。这些类型的.NET之间的区别是什么?我应该何时选择在我的项目中使用.NET Core,而不是.NET Framework或Xamarin?
答案 0 :(得分:220)
根据文档here,您应该在以下6种典型方案中使用.NET Core而不是.NET Framework或Xamarin。
1。跨平台需求
显然,如果您的目标是拥有一个应该能够跨平台(Windows,Linux和MacOS)运行的应用程序(Web /服务),那么.NET生态系统中的最佳选择是使用.NET Core作为其运行时(CoreCLR)和库是跨平台的。另一种选择是使用Mono项目。
这两个选择都是开源的,但.NET Core直接得到了微软的官方支持,并将继续投入大量资金。
在跨平台使用.NET Core时,Windows上存在最佳开发体验,Visual Studio IDE支持许多生产力功能,包括项目管理,调试,源代码控制,重构,包括Intellisense的丰富编辑,测试等等。但是,在Mac,Linux和Windows上使用Visual Studio Code也支持丰富的开发,包括智能感知和调试。即使像Sublime,Emacs,VI等第三方编辑也能很好地工作,并且可以使用开源的Omnisharp项目获得编辑智能感知。
2。微服务
当您构建面向微服务的系统由多个独立,动态可扩展,有状态或无状态的微服务组成时,您在这里拥有的巨大优势是您可以在微服务级别使用不同的技术/框架/语言。这允许您在系统中使用每个微区域的最佳方法和技术,因此如果您想构建性能非常高且可扩展的微服务,则应使用.NET Core。最后,如果您需要使用与.NET Core不兼容的任何.NET Framework库,那么没有问题,您可以使用.NET Framework构建该微服务,并且将来您可以使用.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的摩尔定律性能改进的时代已不再适用;但是,当您的系统不断发展时,您需要做更多的事情,并且需要更高的可扩展性和性能,以满足日益增长的用户需求,这些用户的数量呈指数级增长。您需要提高效率,优化各地,并最终在机器,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 :(得分:150)
这就是微软解释它的方式:
.NET Framework 是"完整"或"传统"随Windows分发的.NET风格。在构建桌面Windows或UWP应用程序或使用较旧的ASP.NET 4.6+时使用此选项。
.NET Core 是在Windows,Mac和Linux上运行的跨平台.NET。当您要构建可在任何平台上运行的控制台或Web应用程序(包括Docker容器内部)时,请使用此选项。目前不包括UWP /桌面应用程序。
Xamarin 用于构建可在iOS,Android或Windows Phone设备上运行的移动应用。
Xamarin通常运行在 Mono 之上,这是在Microsoft决定正式与.NET Core交叉平台之前为跨平台支持而构建的.NET版本。与Xamarin一样,Unity平台也运行在Mono之上。常见的混淆点是ASP.NET Core适合的地方.ASP.NET Core可以在.NET Framework(Windows)或.NET Core(跨平台)之上运行,详见本答案:{ {3}}
答案 2 :(得分:21)
您可以在此行中引用 - Difference between ASP.NET Core (.NET Core) and ASP.NET Core (.NET Framework)
Xamarin 根本不是辩论。当您想使用C#构建移动(iOS,Android和Windows Mobile)应用程序时,Xamarin是您唯一的选择。
.NET Framework 支持Windows和Web应用程序。今天,您可以使用Windows窗体,WPF和UWP在.NET Framework中构建Windows应用程序。 ASP.NET MVC用于在.NET Framework中构建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
答案 3 :(得分:3)
答案 4 :(得分:1)
.Net 核心类库是基于 .Net标准构建的。 在.NET Standard中,您只能创建不能独立执行且应由另一个 .NET Core或 .NET Framework 可执行项目引用的类库项目。实施可移植到 .Net Framework , .Net Core 和 Xamarin 的库,选择 .Net标准图书馆
(您可以使用.NET Framework创建可执行项目(例如控制台应用程序或ASP.NET应用程序)
这是一个新的开源和跨平台框架,可以为包括Windows,Mac和Linux在内的所有操作系统构建应用程序。
答案 5 :(得分:1)
.NET 5将是2020年11月发布的所有.NET变体的统一版本,因此不再需要在变体之间进行选择。
答案 6 :(得分:0)
.NET Core是您现在应该使用的.NET的当前版本(更多功能,已修复的错误等)
Xamarin是一个平台,可为用C#编码的跨平台移动问题提供解决方案,因此您无需将Swift分别用于IOS和Android。
答案 7 :(得分:0)
于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/
答案 8 :(得分:0)
Xamarin用于电话应用程序(两个IOS / Android)。 .NET Core用于设计可在Apache和IIS上运行的Web应用程序。
那是两个句子的区别。
答案 9 :(得分:-2)
.Net 框架工作用于 Windows 基础应用程序。 .Net Core Frame 工作用于跨平台基础应用程序。 Xamarin Frame work 用于移动应用开发。