1。跨平台需求
显然,如果您的目标是拥有一个能够跨平台(Windows、Linux 和 MacOS)运行的应用程序(Web/服务),那么 .NET 生态系统中的最佳选择是使用 .NET Core 作为其运行时(CoreCLR)和库是跨平台的。另一种选择是使用 Mono Project。
这两种选择都是开源的,但 .NET Core 是由 Microsoft 直接和官方支持的,并且将在未来进行大量投资。
在跨平台使用 .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 内核的集群中更好地扩展。这不仅仅是用户满意度的问题。它还可以在成本/总体拥有成本方面产生巨大差异。这就是争取性能和可扩展性很重要的原因。
如前所述,如果您可以将系统的小部分隔离为微服务或任何其他松散耦合的方法,那就更好了,因为您不仅能够独立地发展每个小部分/微服务,而且拥有更好的长期的敏捷性和维护,但如果您需要做的事情与 .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 中安装依赖于不同版本框架的应用程序,则需要使用 .NET Core,它提供 100% 并排,如本文档前面所述。
6。 Windows 10 UWP .NET 应用。