.Net vs .Net Core,我改如何选择?看这一篇文章就够了

前言

file

.Net目前支持构建服务器端应用程序的两种实现主要有两种,.NET Framework和.NET Core。二者共享许多相同的组件,而且您能够在二者之间共享代码。可是,二者之间存在根本差别,在咱们选择使用哪一种框架构建应用时,您的选择取决于您要完成的工做,如下说明两种框架的应用场景,但愿可以帮助您作出最正确的选择。服务器

在如下状况下,将.NET Core用于服务器应用程序:

  • 您有跨平台的需求。
  • 您正在针对微服务。
  • 您正在使用Docker容器。
  • 您须要高性能和可扩展的系统。
  • 每一个应用程序须要并行的.NET版本。
  • 在如下状况下,将.NET Framework用于服务器应用程序:

您的应用当前使用.NET Framework(建议扩展而不是迁移)。

  • 您的应用程序使用了.NET Core不可用的第三方.NET库或NuGet软件包。
  • 您的应用使用了.NET Core没法使用的.NET技术。
  • 您的应用使用的平台不支持.NET Core。 Windows,macOS和Linux支持.NET Core。

什么时候选择.NET Core

file

如下各节对前面所述选择.NET Core的缘由进行了更详细的说明。架构

跨平台需求

若是您的应用程序(Web /服务)须要在多个平台(Windows,Linux和macOS)上运行,请使用.NET Core。框架

.NET Core支持将前面提到的操做系统做为您的开发工做站。 Visual Studio为Windows和macOS提供了集成开发环境(IDE)。您还可使用Visual Studio Code,该代码可在macOS,Linux和Windows上运行。 Visual Studio Code支持.NET Core,包括IntelliSense和调试。大多数第三方编辑器(例如Sublime,Emacs和VI)均可以使用.NET Core。这些第三方编辑器使用Omnisharp得到编辑器IntelliSense。您也能够避免使用任何代码编辑器,而直接使用适用于全部受支持平台的.NET Core CLI。编辑器

微服务架构

微服务架构容许跨服务边界混合使用多种技术。这种技术组合使.NET Core能够逐渐与可与其余微服务或服务一块儿使用的新微服务兼容。例如,您能够混合使用.NET Framework,Java,Ruby或其余单片技术开发的微服务或服务。模块化

有许多可用的基础架构平台。 Azure Service Fabric专为大型和复杂的微服务系统而设计。 Azure应用服务是无状态微服务的理想选择。如``容器''部分所述,基于Docker的微服务替代品适合任何类型的微服务方法。全部这些平台都支持.NET Core,使其成为托管微服务的理想选择。微服务

有关微服务体系结构的更多信息,请参见.NET微服务。容器化.NET应用程序的体系结构。工具

容器

容器一般与微服务架构结合使用。容器还能够用于容器化遵循任何体系结构模式的Web应用程序或服务。 .NET Framework能够在Windows容器上使用,可是.NET Core的模块化和轻量级的特性使其成为容器的更好选择。建立和部署容器时,.NET Core的映像大小比.NET Framework小得多。由于它是跨平台的,因此您能够将服务器应用程序部署到Linux Docker容器。性能

Docker容器能够托管在您本身的Linux或Windows基础结构中,也能够托管在诸如Azure Kubernetes Service之类的云服务中。 Azure Kubernetes Service能够在云中管理,协调和扩展基于容器的应用程序。测试

对高性能和可扩展系统的需求

当您的系统须要最佳的性能和可伸缩性时,.NET Core和ASP.NET Core是您的最佳选择。 Windows Server和Linux的高性能服务器运行时使.NET成为TechEmpower基准测试中性能最高的Web框架。spa

性能和可伸缩性与可能正在运行数百个微服务的微服务体系结构特别相关。使用ASP.NET Core,系统运行的服务器/虚拟机(VM)数量少得多。减小的服务器/虚拟机节省了基础架构和托管成本。

每一个应用程序级别并排的.NET版本的需求

要安装依赖于不一样版本.NET的应用程序,建议使用.NET Core。 .NET Core可在同一台计算机上并行安装不一样版本的.NET Core运行时。这种并行安装容许在同一服务器上提供多个服务,每一个服务都在其本身的.NET Core版本上。它还下降了风险,并节省了应用程序升级和IT运营的费用。

什么时候选择.NET Framework

file

.NET Core为新的应用程序和应用程序模式提供了明显的好处。可是,对于许多现有方案而言,.NET Framework仍然是天然的选择,所以对于全部服务器应用程序,.NET Core都不会取代.NET Framework。

当前.NET Framework应用程序

在大多数状况下,您不须要将现有应用程序迁移到.NET Core。相反,建议的方法是在扩展示有应用程序时使用.NET Core,例如在ASP.NET Core中编写新的Web服务。

须要使用不适用于.NET Core的第三方.NET库或NuGet软件包

图书馆正在迅速拥抱.NET标准。 .NET Standard支持跨全部.NET实现(包括.NET Core)共享代码。使用.NET Standard 2.0,这甚至更加容易:

API的表面变得更大。

引入了.NET Framework兼容模式。此兼容模式容许.NET Standard / .NET Core项目引用.NET Framework库。要了解有关兼容模式的更多信息,请参见宣布.NET Standard 2.0。
所以,仅在库或NuGet软件包使用.NET Standard / .NET Core中不可用的技术的状况下,才须要使用.NET Framework。

须要使用.NET Core不可用的.NET技术

.NET Core中不提供某些.NET Framework技术。其中一些可能在更高的.NET Core版本中可用。其余则不适用于.NET Core定位的新应用程序模式,而且可能永远不可用。如下列表显示了.NET Core中找不到的最多见技术:

ASP.NET Web窗体应用程序:

ASP.NET Web窗体仅在.NET Framework中可用。 ASP.NET Core不能用于ASP.NET Web窗体。没有计划将ASP.NET Web窗体引入.NET Core。

ASP.NET Web Pages应用程序:

ASP.NET Core中不包含ASP.NET Web Pages。

WCF服务实施。

即便有WCF-Client库可使用.NET Core中的WCF服务,WCF服务器实现当前也仅在.NET Framework中可用。该方案不是当前.NET Core计划的一部分,但正在考虑未来使用。

与工做流相关的服务:

Windows Workflow Foundation(WF),工做流服务(单个服务中的WCF + WF)和WCF数据服务(之前称为“ ADO.NET数据服务”)仅在.NET Framework中可用。没有计划将WF / WCF + WF / WCF数据服务引入.NET Core。

须要使用不支持.NET Core的平台

某些Microsoft或第三方平台不支持.NET Core。某些Azure服务提供了尚没法在.NET Core上使用的SDK。这是一个过渡状况,由于全部Azure服务都使用.NET Core。同时,您始终可使用等效的REST API代替客户端SDK。

结语

以上总结了.Net与.Net Framework之间的差别和每项的最佳使用场景,但愿可以为刚上手.Net的朋友们答疑解惑。接下来我会陆续制做.Net与.Net Core相关基础教程,并分享到我的博客,但愿你们可以关注支持,原创,喜欢的话记得帮忙点个赞。

file

本文由博客群发一文多发等运营工具平台 OpenWrite 发布
相关文章
相关标签/搜索