.NET Framework 与 .NET Core 与 .NET Standard 之间的差异

介绍

        在本文中,我们将探讨 .NET Framework、.NET Core 和 .NET Standard 之间的差异。

.NET Framework 与 .NET Core

.NET框架.NET核心
 历史 .NET Framework 是 .NET 的第一个实现。 .NET Core 是 .NET 的最新实现。
 开源 .NET Framework 的某些组件是开源的。 .NET Core 是开源的。
 跨平台 它仅适用于 Windows 平台。这不支持跨平台部署。 它可以跨平台运行,如 Windows、Linux 和 macOS。
 第三方软件包支持 有很多第三方包、库可供使用。 .NET Core 还支持大量第三方包,但它仍然无法与 .NET Framework 竞争。
 应用内部署 它不支持应用内部署模型。 它确实支持应用内部署模型。
 性能和可扩展性 与 .NET Core 相比,.NET Framework 在应用程序的性能和可扩展性方面效果较差。 与 .NET Framework 相比,.NET Core 提供了高性能和可扩展性。
 微服务实施 .NET Framework不支持微服务的实现。 .NET Core支持微服务的实现
 REST 服务实施 它支持 REST API 服务实现。 我们可以使用 .NET Core 创建 REST API。
 命令行工具 .NET Core 为所有支持的平台提供轻量级编辑器和命令行工具。 .NET Framework 对于命令行界面来说很重要
 何时使用
  • 我们的应用程序仅运行在 Windows 平台上。
  • 我们的应用程序基于 WinForms 或 WPF 应用程序。
  • ASP.NET Web 窗体创建。
  • 如果你想创建一个WCF服务。
  • 我们的应用程序使用了一些 .NET Core 不支持的第三方包。
  • 该应用程序使用 .NET Core 不可用的 .NET 技术。
  • 如果您的应用程序想要访问 Windows 特定的 API,则选择 .NET Framework。
  • 创建跨平台应用程序。
  • 要创建微服务,那么一定要使用 .NET Core。
  • 将应用程序部署到 Docker 容器。
  • 创建高性能和可扩展的应用程序。
  • 如果您并行运行多个 .NET 版本,请选择 .NET Core。
  • 如果您想要命令行界面 (CLI) 控制,那么 .NET core 是最佳选择。
 何时不使用
  • 跨操作系统平台运行是应用程序的要求。 
  • 如果你想实现微服务。
  • 需要最佳性能和可扩展性的 Web 应用程序 
  • .NET Core 中不存在 ASP.NET WebForms。
  • 如果你想创建一个WCF服务。
  • 如果您的应用程序想要访问特定于 Windows 的 API。
  • 如果您的应用程序需要使用 Windows 注册表、WMI 或其他 Windows 特定 API,则它将无法与 .NET Core 一起使用。


.NET Standard

        假设我们使用 .NET Framework 创建了一个应用程序并使用了一些共享库(由 .NET Framework 开发)。一段时间后,我们决定在 .NET Core 中创建一个应用程序,并尝试重用上述相同的共享库。它兼容吗?我们可以使用它吗?答案是。由于兼容性问题,我们无法在 .NET Core 应用程序中使用 .NET Framework 基类库。基本上,面向 .NET Framework 的库只能在基于 .NET Framework 的应用程序中运行,而面向 .NET Core 的库只能在 .NET Core 兼容的应用程序中运行。

解决办法是什么?

        解决方案是.NET Standard。.NET Standard 是一组 API 的规范,它与任何 .NET 平台(.NET Framework 或 .NET Core)兼容。如果我们使用 .NET Standard 创建基类库,那么它将与任何 .NET 运行时一起运行。因此,如果您想创建一个稍后重用的共享库,那么您可以选择 .NET Standard,因为它也可以与 .NET Framework、.NET Core 和 Xamarin 一起移植。

每个 .NET Standard 版本都包含一些 API 集,例如 System.Data、System.Collections 等。如果引入新版本的 .NET Standard,则它包含所有以前版本的 API 集以及一些新 API。更高版本的 .NET Standard 意味着更多可用的 API。 

.NET Standard 是:

  • 它不是像 .NET Framework 或 .NET Core 那样的框架。
  • 这是所有 .NET 实现都必须实现的一组基本 API
  • 用于代码共享并在不同运行时之间重用代码。
  • 与任何 .NET 应用程序兼容。

.NET Standard 支持多种框架,如下表所示:

.NET Standard - .NET | Microsoft Learn

.NET Standard1.01.11.21.31.41.51.62.02.1
.NET5.05.05.05.05.05.05.05.05.0
.NET Core1.01.01.01.01.01.01.02.03.0
.NET Framework 14.54.54.5.14.64.6.14.6.1 24.6.1 24.6.1 2N/A3
Mono4.64.64.64.64.64.64.65.46.4
Xamarin.iOS10.010.010.010.010.010.010.010.1412.16
Xamarin.Mac3.03.03.03.03.03.03.03.85.16
Xamarin.Android7.07.07.07.07.07.07.08.010.0
Universal Windows Platform10.010.010.010.010.010.0.1629910.0.1629910.0.16299TBD
Unity2018.12018.12018.12018.12018.12018.12018.12018.12021.2.0b6

概括

  • .NET Framework主要用于基于Windows的应用程序开发,与.NET Core相比效率较低。
  • .NET Core 是开源的,用于开发跨平台应用程序和微服务。
  • .NET Standard 用于创建可在任何 .NET 平台中重用的共享库。

我希望您喜欢本文,并且现在了解 .NET Framework、.NET Core 和 .NET Standard 之间的差异。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/336529.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏引擎支持脚本编程有啥好处

很多游戏引擎都支持脚本编程。Unity、Unreal Engine、CryEngine等大型游戏引擎都支持使用脚本编写游戏逻辑和功能。脚本编程通常使用C#、Lua或Python等编程语言,并且可以与游戏引擎的API进行交互来控制游戏对象、设置变量、执行行为等。使用脚本编程,游戏…

无线与局域网技术期末划题自制答案

简答题 1.描述5G的三大应用场景? 5G的三大应用场景包括增强型移动宽带(eMBB)、超可靠低延迟通信(URLLC)和大规模机器类型通信(mMTC)。增强型移动宽带(eMBB)主要用于支持…

1881_S32K344开发工具以及MCAL软件安装

全部学习汇总: GreyZhang/g_s32k344: A new MCU learning notes. I would try to use MCAL instead of SDK. (github.com) 编译有专门的编译器安装包,也有IDE的安装形式。这里我选择了IDE,因为我还需要一个开发调试环境。这个IDE可以让我方便…

Postman工具使用一篇快速入门教程

文章目录 下载安装注册登录CollectionFolderRequestGet请求Post请求Header设置Response响应 EnvironmentsGlobal环境变量其他环境变量Collection变量变量使用同名变量的优先级 Postman内置变量Pre-request script和Test script脚本设置、删除和获取变量获取请求参数获取响应数据…

Simpy简介:python仿真模拟库-03/5

一、说明 在过去的两篇文章中,我们了解了 simpy 的基础知识、声明变量和处理表达式。值得注意的例子包括评估导数和积分。现在,让我们继续使用函数。 二、SymPy — 函数类 SymPy 包包含 sympy.core.function 模块中的 Function 类。该类作为各种数学函数…

Linux——firewalld防火墙(一)

一、Linux防火墙基础 Linux 的防火墙体系主要工作在网络层.针对TCP/P数据包实时过滤和限制.属于典型的包过滤防火墙(或称为网络层防火墙)。Linux系统的防火墙体系基于内核编码实现.具有非常稳定的性能和高效率,也因此获得广泛的应用.在CentOS 7系统中几种…

【办公类-19-01】20240108图书统计登记表制作(23个班级)EXCEL复制表格并合并表格

背景需求: 制作一个EXCEL模板,每个班级的班主任统计 班级图书量(一个孩子10本,最多35个孩子350本) EXCEL模板 1.0版本: 将这个模板制作N份——每班一份 项目:班级图书统计表 核心:一个EXCEL模板批量生成…

一个Pygame的Hello World示例程序

创建一个标题为Hello World的窗口,窗口中间显示有Pygame的Logo的python代码 import sys import pygamedef main():pygame.init()screen pygame.display.set_mode((800, 400))pygame.display.set_caption("Hello World")logo pygame.image.load("p…

SWM341系列之SWM34SRET6介绍

SWM341系列的介绍 本文介绍了华芯微特SWM341系列主要性能,和其系列之一的SWM34SRET6-50驱动4.3寸800*480 TFTLCD显示的例程应用。 SWM341系列性能 SWM341是一款基于ARM Cortex-M33的32位微控制器,片上包含精度为 1%以内的 20MHz/40MHz 时钟,最…

DataFrame详解

清洗相关的API 清洗相关的API: 1.去重API: dropDupilcates 2.删除缺失值API: dropna 3.替换缺失值API: fillna 去重API: dropDupilcates dropDuplicates(subset):删除重复数据 1.用来删除重复数据,如果没有指定参数subset,比对行中所有字段内容,如果全部相同,则认为是重复数据,…

uniapp 在ios中u-input password显示密码 不生效

u-input组件的password属性在uniapp上多端开发,在小程序,H5上都没有问题,在App端有效,就是在ios中无效 找到u-input文件 修改源码 将原本的:password"password || type password || undefined加上||false即可

KEAZ128中MSCAN的同步时钟初始化失败已解决

文章目录 运行环境:MSCAN初始化成功代码初始化流程图初始化失败分析初始化异常原因 运行环境: MSCAN初始化代码(采用24MHz总线时钟当时不行,于是直接采用了外部晶振时钟16MHz) MSCAN初始化成功代码 void CAN_Init(uint_8 mode,uint_8 open…