.NET Core,.NET Framework和Xamarin有什么区别?

Mee*_*hao 333 .net xamarin .net-core

微软现在在其.NET系列中拥有.NET Core,.NET Framework和Xamarin(Mono).

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

小智 249

根据此处的文档,您应该在以下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. 我应该什么时候使用.NET的核心?
  2. 我什么时候应该使用.NET Framework 4.x而不是.NET Core?
  3. 我什么时候应该使用Xamarin而不是.NET Core?

  • 为什么asp.net Core更具性能?为什么在构建微服务时更好? (17认同)
  • 你的链接坏了 (8认同)
  • 现在Visual Studio for Mac也可用.所以对.NET Core更加积极的一点.https://www.visualstudio.com/vs/visual-studio-mac/ (4认同)
  • @JuanZamudio框架的版本是独立的层,每个层都依赖于紧接在前的版本,位于依赖链中,可以追溯到2.0版,该版本完全取代了1.1版。结果,如果使用4.5的_anything_,则隐式依赖于回到2.0的所有内容。与重写API相比,Core框架更多的是重构依赖关系以消除无关紧要的行李,这主要是但并非完全不变。一些事情也得到了极大简化,例如EF Core。 (2认同)

Nat*_*ini 162

这就是微软解释它的方式:

.NET Framework,.NET Core,Xamarin

.NET Framework是随Windows一起发布的.NET的"完整"或"传统"风格.在构建桌面Windows或UWP应用程序或使用较旧的ASP.NET 4.6+时使用此选项.

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

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

Xamarin通常运行在Mono之上,Mono是在Microsoft决定正式与.NET Core交叉平台之前为跨平台支持而构建的.NET版本.与Xamarin一样,Unity平台也运行在Mono之上.


一个常见的混淆点是ASP.NET Core适合的地方.ASP.NET Core可以运行在.NET Framework(Windows)或.NET Core(跨平台)之上,详见答案:ASP之间的区别. NET Core(.NET Core)和ASP.NET Core(.NET Framework)

  • 每当有人说** .NET Core **是跨平台的时,新开发人员就会感到困惑。“ .NET Core”仅支持** UWP + ASP.NET Core **,而** ASP.NET Core **是跨平台的,** UWP **不支持。 (3认同)

log*_*i98 30

您可以参考这一行 - ASP.NET Core(.NET Core)和ASP.NET Core(.NET Framework)之间的区别

.NET Framework,.NET Core,Xamarin

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 /标准/选择核框架服务器


yan*_*end 14

.NET 5将成为 2020 年 11 月推出的所有 .NET 变体的统一版本,因此不再需要在变体之间进行选择。 在此处输入图片说明

  • 这是一个谎言。.NET Core 无法支持 Linux 上的 WPF/WinForms! (3认同)

Raz*_*ain 8

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

.Net核心类库基于.Net标准构建。.NET标准可以使不能独立执行,并应被另一只引用类库项目.NET核心或 .NET框架可执行project.If要实现一个库,移植到.Net框架净CoreXamarin,选择.Net标准

  1. .NET Framework是基于.NET的框架,它支持Windows和Web应用程序

(您可以使用.NET Framework创建可执行项目(例如控制台应用程序或ASP.NET应用程序)

  1. ASP.NET是基于.NET Framework构建的Web应用程序开发技术
  2. .NET Core也是基于.NET的框架。

它是新的开源和跨平台框​​架,可为所有操作系统(包括Windows,Mac和Linux)构建应用程序。

  1. Xamarin是使用C#开发跨平台移动应用程序(iOS,Android和Windows Mobile)的框架

.NET Standard [蓝色]的实现支持和对.NET Standard的完全支持的最小可行平台(最新:[ https://docs.microsoft.com/zh-cn/dotnet/standard/net-standard#net-implementation-支持]


Shi*_*vCK 6

[截至 2022 年 2 月]

.NET框架

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

.NET (以前的.NET Core)

  • 免费和开源
  • 跨平台
  • .NET Framework的后继者
  • 目前.NET 6是LTS版本

Xamarin

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