微软现在做到了.网络核心.NET框架及其家族中的Xamarin(Mono).

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

推荐答案

你应该使用.NET核心,而不是.NET框架或Xamarin,根据文档here,在以下6种典型场景中.

1.跨平台需求

显然,如果您的目标是拥有一个应该能够跨平台(Windows、Linux和MacOS)运行的应用程序(Web/服务),那么.NET生态系统中的最佳 Select 就是使用.NET Core作为其运行时(CoreCLR),并且库是跨平台的.另一种 Select 是使用Mono Project.

这两种 Select 都是开源的,但是.NET Core得到了微软的直接和官方支持,今后将进行大量投资.

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

2.微服务

当您构建一个面向微服务的系统时,它由多个独立的、动态可伸缩的、有状态的或无状态的微服务组成,这里的最大优势是您可以在微服务级别使用不同的技术/框架/语言.这允许您在系统的每个微区使用最佳的方法和技术,因此如果您想要构建非常高性能和可扩展的微服务,您应该使用.净核心.最终,如果你需要使用的话.与不兼容的NET Framework库.NET核心,并没有问题,你们可以用.NET框架,将来您可能可以用.净核心.

你可以使用的基础设施平台有很多.理想情况下,对于大型复杂的微服务系统,您应该使用Azure Service Fabric.但对于无状态微服务,你也可以使用其他产品,比如Azure应用服务或Azure功能.

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

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

当您的系统需要尽可能最好的性能和可扩展性,以便无论您有多少用户都能获得最佳响应时,您就可以做到这一点.NET内核和ASP.网芯真的很shiny .同样数量的基础设施/硬件越多,最终用户的体验就越丰富——而且成本更低.

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

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

4.Mac、Linux或Windows的命令行式开发.

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

5.需要并肩作战.每个应用程序级别的NET版本.

如果您希望能够在中安装依赖于不同版本框架的应用程序.NET,你需要使用.NET Core,如本文档前面所述,它提供100%并排.

6.Windows 10 UWP.网络apply.

此外,您可能还想阅读:

  1. When should I NOT use .NET Core?
  2. When should I still use .NET Framework 4.x, instead of .NET Core?
  3. When should I use Xamarin, instead of .NET Core?

.net相关问答推荐

无法在Ubuntu 22.04.3上运行带有Rider 2023和DotNet-8.0的项目

在 C# 中输入按键

如何以编程方式判断类型是 struct 还是类?

添加新实体标量时实体框架 4 映射片段错误

使文本框不可编辑

托管和非托管代码、内存和大小有什么区别?

为什么需要 XmlNamespaceManager?

什么版本的 .NET 附带什么版本的 Windows?

.NET 反射的成本是多少?

在同一解决方案中引用 2 个不同版本的 log4net

如何正确和完全关闭/重置 TcpClient 连接?

如何使用 EPPlus 设置 XLSX 单元格宽度?

如何在 nuspec 中指定特定的依赖版本?

MVC4 HTTP 错误 403.14 - 禁止

带有嵌套控件的设计模式

如何为 Dapper 查询动态创建参数

C#/.NET 中仅命名空间的类可见性?

如何使用 XmlSerializer 将字符串序列化为 CDATA?

枚举和匹配属性的 C# 命名约定

判断类中是否存在属性