• .NET平台系列23:.NET Core/.NET5/.NET6 和 .NET Framework 的选择建议


    有两种支持的 .NET 实现可用于生成服务器端应用:

    • .NET Framework
    • .NET Core/5+,包括 .NET Core、.NET 5 及更高版本。

    这两者共用许多相同的组件,你可在它们之间共享代码。 但两者之间存在根本的差异,可根据需要实现的目标进行选择。 本文介绍了在何种情况下进行选择。

    在以下情况,对服务器应用程序使用 .NET Core/5+:

    • 用户有跨平台需求。
    • 你正在以微服务为目标。
    • 你正在使用 Docker 容器。
    • 需要高性能和可扩展的系统。
    • 需按应用程序提供并行的 .NET 版本。

    在以下情况,对服务器应用程序使用 .NET Framework :

    • 应用当前使用 .NET Framework(建议扩展而不是迁移)。
    • 应用使用不可用于 .NET Core/5+ 的第三方 .NET 库或 NuGet 包。
    • 应用使用不可用于 .NET Core/5+ 的 .NET Framework 技术。
    • 应用使用不支持 .NET Core/5+ 的平台。
    选择 .NET Core/5+ 的情形
    以下各部分更详细地说明了前面提到的选择 .NET Core/5+ 的原因。
    • 跨平台需求

      如果应用程序(Web/服务)需要在多个平台(Windows、Linux 和 macOS)上运行,请使用 .NET Core/.NET5+。

      .NET Core/.NET5+ 作为开发工作站支持前面提到的操作系统。 Visual Studio 提供了适用于 Windows 和 macOS 的集成开发环境 (IDE)。 还可使用运行于 macOS、Linux 和 Windows 上的 Visual Studio Code。 Visual Studio Code 支持 .NET Core/5+,包括 IntelliSense 和调试。 大多数第三方编辑器(如 Sublime、Emacs 和 VI)都可搭配 .NET Core/5+ 使用。 这些第三方编辑器可使用 Omnisharp 获取编辑器 IntelliSense。 也可不使用任何代码编辑器,直接使用适用于所有支持平台的 .NET CLI

    • 微服务体系结构

      微服务体系结构允许跨服务边界组合使用技术。 通过这种技术组合,可逐步接受 .NET Core/.NET5+ 作为能与其他微服务或服务搭配使用的新微服务。 例如,可组合使用微服务或使用 .NET Framework、Java、Ruby 或其他单片技术开发的服务。

      可用的基础结构平台有很多。 Azure Service Fabric,设计用于大型和复杂微服务系统 。 Azure App Service,很适合用于无状态微服务。 基于 Docker 的微服务备选方案适合任何一种微服务方法,这部分内容将在容器部分进行说明。 所有这些平台都支持 .NET Core/5+,是托管微服务的理想选择。

      有关微服务体系结构的详细信息,请参阅 .NET 微服务 - 适用于容器化 .NET 应用程序的体系结构

    • 容器

      容器通常与微服务体系结构结合使用。 还可使用容器将遵循任何体系结构模式的 Web 应用或服务容器化。 可在 Windows 容器上使用 .NET Framework,但 .NET Core/.NET5+ 的模块化和轻型性质使之成为更适合容器的选择。 在创建和部署容器时,使用 .NET Core/5+ 时容器的映像大小要远小于使用 .NET Framework 时的大小。 例如,因为它是跨平台的,所以可将服务器应用部署到 Linux Docker 容器。

      Docker 容器可托管在自己的 Linux 或 Windows 基础结构中,或托管在 Azure Kubernetes 服务等云服务中。 Azure Kubernetes 服务可管理、协调和缩放云中基于容器的应用程序。

    • 高性能和可扩展的系统

      如果系统需要最佳的性能和可伸缩性,.NET Core/.NET5+ 和 ASP.NET Core 是最佳的选择。 Windows Server 和 Linux 的高性能服务器运行时使 ASP.NET Core 成为 TechEmpower 基准上性能最佳的 Web 框架。

      性能和可伸缩性对微服务体系结构尤为重要,体系结构中可能正在运行数百个微服务。 借助 ASP.NET Core,系统运行的服务器/虚拟机 (VM) 数要低得多。 减少服务器/VM 后可节省基础结构和托管成本。

    • 按应用程序级别并行安装 .NET 版本

      若要安装含不同 .NET 版本上的依赖项的应用程序,建议使用 NET Core/.NET5+。 .NET 对该实现支持在同一计算机上并行安装不同版本的 .NET 运行时。 并行安装允许在同一服务器上使用多项服务,每项服务位于其相应的 .NET Core/.NET5+ 版本上。 这还可在应用程序升级和 IT 运营时降低风险、节省成本。

      .NET Framework 不支持并行安装。 它是一个 Windows 组件,一次只能有一个版本存在于计算机上。 .NET Framework 的每个版本均替换之前的版本。 如果安装面向 .NET Framework 更高版本的新应用,则可能会中断计算机上运行的现有应用,因为替换了之前的版本。

    选择 .NET Framework 的情形
      .NET Core/.NET5+ 对新应用程序和应用程序模式特别有用。 但在很多现有方案中依然会自然而然地选择 .NET Framework,并且对于所有服务器应用程序来说.NET Framework 不会被 .NET Core/.NET5+ 代替。
    • 现有的 .NET Framework 应用程序

      在大多数情况下,不需要将现有应用程序迁移到 .NET Core/.NET5+。 相反,若要扩展现有的应用程序(例如,在 ASP.NET Core 中写入新的 Web 服务),建议使用 .NET Core/.NET5+。

    • 不可用于 .NET Core/.NET5+ 的第三方库或 NuGet 包

      通过 .NET Standard 可跨各种 .NET 实现(包括 .NET Core/5+)共享代码。 使用 .NET Standard 2.0,兼容性模式允许 .NET Standard 和 .NET Core/.NET5+ 项目引用 .NET Framework 库。 有关详细信息,请参阅对 .NET Framework 库的支持

      仅当库或 NuGet 包使用 .NET Standard 或 .NET Core/.NET5+ 中不提供的技术时,才需要使用 .NET Framework。

    • .NET Framework 技术不可用于 .NET Core/.NET5+

      某些 .NET Framework 技术在 .NET Core/.NET5+ 中不可用。 以下列表显示无法在 .NET Core/.NET5+ 中找到的最常见技术:

    • ASP.NET Web 窗体应用程序:ASP.NET Web 窗体仅在.NET Framework 中可用。 ASP.NET Core 不能用于 ASP.NET Web 窗体。

    • ASP.NET 网页应用程序:ASP.NET 网页未包含在 ASP.NET Core 中。

    • WCF 服务的实现。 虽然 WCF 客户端库可从 .NET Core/.NET5+ 使用 WCF 服务,但 WCF 服务器实现目前只在 .NET Framework 上可用。

    • 工作流相关的服务:Windows Workflow Foundation (WF)、工作流服务(WCF + 单个服务中的 WF)和 WCF Data Services(以前称为“ADO.NET Data Services”)仅在 .NET Framework 上可用。

    • 语言支持:.NET Core/.NET5+ 目前支持 Visual Basic 和 F#,但不是所有项目类型都支持。 有关支持的项目模板列表,请参阅 dotnet new 的模板选项

    有关详细信息,请参阅在 .NET 5 中不可用的 .NET Framework 技术

    • 平台不支持.NET Core/.NET5+

      某些 Microsoft 或第三方平台不支持 .NET Core/.NET5+。 某些 Azure 服务提供尚不可用于 .NET Core/.NET5+ 的 SDK。 在这种情况下,可使用等效的 REST API(而不是客户端 SDK)。


    参考文献:

    成在管理,败在经验;嬴在选择,输在不学!  贵在坚持!

    欢迎关注作者头条号 张传宁IT讲堂,获取更多IT文章、视频等优质内容。

       

     个人作品

       

        1、BIMFace.Community.SDK.NET

         开源地址:https://gitee.com/NAlps/BIMFace.SDK

         系列博客:https://www.cnblogs.com/SavionZhang/p/11424431.html

         系列视频:https://www.cnblogs.com/SavionZhang/p/14258393.html

       

        2、ZCN.NET.Common

         开源地址:https://gitee.com/NAlps/zcn.net.common

     技术栈

       

     1、Visual Studio、.C#/.NET、.NET Core、MVC、Web API、RESTful API、gRPC、SignalR、Python

     2、jQuery、Vue.js、Bootstrap

     3、数据库:SQLServer、MySQL、PostgreSQL、Oracle、SQLite、Redis、MongoDB、ElasticSearch、TiDB、达梦DM、人大金仓、 神通、南大通用 GBase、华为 GaussDB 、腾讯 TDSQL 、阿里 PolarDB、蚂蚁金服 OceanBase、东软 OpenBASE、浪潮云溪数据库 ZNBase

     4、ORM:Dapper、Entity Framework、FreeSql、SqlSugar、分库分表、读写分离

     5、架构:领域驱动设计 DDD、ABP

     6、环境:跨平台、Windows、Linux(CentOS、麒麟、统信UOS、深度Linux)、maxOS、IIS、Nginx、Apach

     7、移动App:Android、IOS、HarmonyOS、微信、小程序、快应用、Xamarin、uni-app、MUI、Flutter、Framework7、Cordova、Ionic、React Native、Taro、NutUI、Smobiler

       

     云原生、微服务、Docker、CI/CD、DevOps、K8S;

     Dapr、RabbitMQ、Kafka、分布式、大数据、高并发、负载均衡、中间件、RPC、ELK;

     .NET + Docker + jenkins + Github + Harbor + K8S;

    出处:www.cnblogs.com/SavionZhang

    作者:张传宁   微软MCP、系统架构设计师、系统集成项目管理工程师、科技部创新工程师。

              专注于微软.NET技术(.NET Core、Web、MVC、WinForm、WPF)、通用权限管理系统、工作流引擎、自动化项目(代码)生成器、SOA 、DDD、 云原生(Docker、微服务、DevOps、CI/CD);PDF、CAD、BIM 审图等研究与应用。

              多次参与电子政务、图书教育、生产制造等企业级大型项目研发与管理工作。

              熟悉中小企业软件开发过程:需求分析、架构设计、编码测试、实施部署、项目管理。通过技术与管理帮助中小企业快速化实现互联网技术全流程解决方案。

             


             

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

    如有问题,可以通过邮件905442693@qq.com联系。共同交流、互相学习。

    如果您觉得文章对您有帮助,请点击文章右下角【推荐】。您的鼓励是作者持续创作的最大动力!

  • 相关阅读:
    正当防卫与互殴的界限在哪里
    [php入门] 5、初学CSS从中记下的一些基础点(For小白)
    [ZigBee] 13、ZigBee基础阶段性回顾与加深理解——用定时器1产生PWM来控制LED亮度(七色灯)
    [ZigBee] 12、ZigBee之看门狗定时器——饿了就咬人的GOOD DOG
    [ZigBee] 11、ZigBee之睡眠定时器二
    [ZigBee] 10、ZigBee之睡眠定时器
    [ZigBee] 9、ZigBee之AD剖析——AD采集CC2530温度串口显示
    [ZigBee] 8、ZigBee之UART剖析·二(串口收发)
    [php入门] 4、HTML基础入门一篇概览
    [ZigBee] 2、 ZigBee开发环境搭建
  • 原文地址:https://www.cnblogs.com/SavionZhang/p/14824745.html
Copyright © 2020-2023  润新知