.NET Core,.NET Framework和Xamarin有什么区别?
微软现在在其.NET系列中有.NET Core,.NET Framework和Xamarin(Mono)。
这里似乎有很多重叠。 这些类型的.NET有什么区别? 什么时候应该选择在我的项目中使用.NET Core,而不是.NET Framework或Xamarin?
根据此处的文档,您应该在以下6种典型场景中使用.NET Core而不是.NET Framework或Xamarin。
1.跨平台的需求
显然,如果你的目标是要有一个应该可以跨平台(Windows,Linux和MacOS)运行的应用程序(Web /服务),.NET生态系统的最佳选择是使用.NET Core作为其运行时(CoreCLR )和库是跨平台的。 另一种选择是使用Mono项目。
这两种选择都是开源的,但.NET Core直接和正式得到了微软的支持,并且将会有大量的投资向前发展。
在跨平台使用.NET Core时,Windows上的最佳开发体验是使用Visual Studio IDE进行的,该IDE支持许多生产力特性,包括项目管理,调试,源代码控制,重构,包括Intellisense在内的丰富编辑,测试等等。 但是,Mac,Linux和Windows上的Visual Studio Code也支持丰富的开发,包括智能感知和调试。 即使是Sublime,Emacs,VI等第三方编辑也能很好地工作,并且可以使用开源Omnisharp项目获得编辑器智能感知。
2.微服务
当您构建由多个独立的,可动态扩展的,有状态的或无状态的微服务组成的面向微服务的系统时,您在这里获得的巨大优势是您可以在微服务级别使用不同的技术/框架/语言。 这允许您在系统中的每个微区使用最佳方法和技术,因此如果您想构建性能卓越且可扩展的微服务,则应该使用.NET Core。 最终,如果您需要使用与.NET Core不兼容的任何.NET Framework库,则不存在任何问题,您可以使用.NET Framework构建该微服务,并且将来可以用.NET替代它。核心。
您可以使用的基础架构平台有很多。 理想情况下,对于大型和复杂的微服务系统,您应该使用Azure服务结构。 但对于无状态的微服务,您还可以使用其他产品,如Azure App Service或Azure功能。
请注意,截至2016年6月,并非Azure中的每项技术都支持.NET Core,但是现在.NET Core已经RTM发布,Azure中的.NET Core支持将大幅增加。
3.最佳的高性能和可扩展的系统
当您的系统需要尽可能最佳的性能和可扩展性时,无论您拥有多少用户,您都可以获得最佳的响应能力,这就是.NET Core和ASP.NET Core的真正亮点。 使用相同数量的基础设施/硬件可以做的越多,您将为最终用户提供更丰富的体验 - 而且成本更低。
摩尔定律对单CPU的性能改进日子已经不再适用了, 但是当你的系统不断发展时,你需要做更多的事情,并且需要更高的可扩展性和性能,以满足日益增长的用户数量急剧增长的需求。 您需要获得更高的效率,无处不在的优化,并最终在机群,虚拟机和CPU内核之间进行更好的扩展。 这不仅仅是用户满意的问题, 它还可以在成本/ TCO方面产生巨大的差异。 这就是为什么争取性能和可扩展性至关重要的原因。
如前所述,如果您可以将微小服务或其他松耦合方法分离出来,那么它会更好,因为您不仅能够独立演进每个小块/微服务,并且拥有更好的长期敏捷性和维护,而且如果您需要做的是与.NET Core不兼容,您还可以在微服务级别使用任何其他技术。 最终,如果可能的话,您可以重构它并将其带入.NET Core。
4. Mac,Linux或Windows的命令行风格开发。
使用.NET Core时,此方法是可选的。 当然,您也可以使用完整的Visual Studio IDE。 但是,如果您是一位想要使用轻量级编辑器开发并大量使用命令行的开发人员,那么.NET Core就是为CLI设计的。 它在所有支持的平台上提供简单的命令行工具,使开发人员能够在开发人员,实验室或生产机器上以最小的安装量构建和测试应用程序。 像Visual Studio Code这样的编辑使用相同的命令行工具来获得他们的开发经验。 而像Visual Studio这样的IDE使用相同的CLI工具,但将它们隐藏在丰富的IDE体验背后。 开发人员现在可以选择他们想要与从CLI到编辑器到IDE的工具链进行交互的级别。
5.需要每个应用程序级别的.NET版本并行。
如果您希望能够在.NET中安装依赖于不同版本框架的应用程序,则需要使用如本文前面所述的100%并排提供的.NET Core。
6. Windows 10 UWP .NET应用程序。
另外,你也可以阅读:
这就是微软解释它的方式:
.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之上,这是一个.NET版本,它是在Microsoft决定正式与.NET Core跨平台之前为跨平台支持而构建的。 和Xamarin一样,Unity平台也在Mono之上运行。
一个常见的混淆之处就是ASP.NET Core适用的地方。ASP.NET核心可以在.NET Framework(Windows)或.NET Core(跨平台)之上运行,详见本答案:ASP之间的区别。 .NET核心(.NET核心)和ASP.NET核心(.NET Framework)
您可以参考这一行 - ASP.NET Core(.NET Core)和ASP.NET Core(.NET Framework)之间的区别
Xamarin根本不是辩论。 当您想要使用C#构建移动(iOS,Android和Windows Mobile)应用程序时,Xamarin是您唯一的选择。
.NET Framework支持Windows和Web应用程序。 今天,您可以使用Windows Forms,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-框架服务器
上一篇: What's the difference between .NET Core, .NET Framework, and Xamarin?