.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.mzph.cn/news/609984.shtml

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

相关文章

程序员该怎样爱护眼镜

当程序员是非常费眼睛的,一天中我们长期盯着电脑,眼镜会感到酸痛,所以我们大家要学会放松眼镜,下面是一些方法,大家来跟着动起来吧! 1.修改编程软件字体大小 我们可以根据个人喜好将字体大小调成自己觉得…

Linux和windows进程同步与线程同步那些事儿(二): windows线程同步详解示例

《Linux和windows进程同步与线程同步那些事儿(一)》 一、线程同步 1.1 windows下线程同步 在Windows中,线程同步可以通过多种机制来实现,其中最常见的包括互斥量(mutex)、事件(event&#xf…

【python可视化大屏】使用python实现可拖拽数据可视化大屏

介绍: 我在前几期分享了关于爬取weibo评论的爬虫,同时也分享了如何去进行数据可视化的操作。但是之前的可视化都是单独的,没有办法在一个界面上展示的。这样一来呢,大家在看的时候其实是很不方便的,就是没有办法一目了…

vue项目完整搭建与启动

vue项目完整搭建与启动 一,安装node环境二,安装vue脚手架(vue-cli)1.cnpm(淘宝镜像安装)2.npm安装3.yarn安装 三,创建vue项目四,cmd切换目录方式1方式2 一,安装node环境 1.下载地址…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -我创建的投票列表实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

GitLab clone 地址 不对

1丶问题描述 2丶解决方案 解决方案: 找到挂载到宿主机配置文件:gitlab.rb vi gitlab.rb 改成自己的ip 重启容器 docker restart gitlab 如果发现容器一直重启,可采用粗暴的方法,直接干掉当前容器,重新运行一个 …

SpringMVC-异常处理及常用组件

异常处理器 1.基于配置的异常处理 springmvc提供了一个处理控制器方法执行过程中所出现的异常的接口: HandlerExceptionResolver HandlerExceptionResolver接口的实现类有: DefaultHandlerExceptionResolver和SimpleMappingExceptionResolver springmvc提供了自定义的异常处…

Apache Doris (六十二): Spark Doris Connector - (2)-使用

🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. 将编译jar包加入本地Maven仓库

全版本Windows RCE漏洞复现CVE-2023-36025

漏洞简介 CVE-2023-36025是微软于11月补丁日发布的安全更新中修复Windows SmartScreen安全功能绕过漏洞。攻击者可以通过诱导用户单击特制的URL来利用该漏洞,对目标系统进行攻击。成功利用该漏洞的攻击者能够绕过Windows Defender SmartScreen检查及其相关提示。该漏…

2024年【R2移动式压力容器充装】考试资料及R2移动式压力容器充装理论考试

题库来源:安全生产模拟考试一点通公众号小程序 R2移动式压力容器充装考试资料根据新R2移动式压力容器充装考试大纲要求,安全生产模拟考试一点通将R2移动式压力容器充装模拟考试试题进行汇编,组成一套R2移动式压力容器充装全真模拟考试试题&a…

Node.js和npm

目录 01_Node.js01.什么是 Node.js目标讲解小结 02.fs模块-读写文件目标讲解小结 03.path模块-路径处理目标讲解小结 04.案例-压缩前端html目标讲解小结 05.认识URL中的端口号目标讲解小结 06.http模块-创建Web服务目标讲解小结 07.案例-浏览时钟目标讲解小结 02_Node.js模块化…

02-python的基础语法-01python字面量/注释/数据类型/数据类型转换

字面量 在代码中,被写下来的固定的值,被称为字面量。 python中哪些值是可以被写出来的呢?又该如何写呢? 字符串:又称文本,是由任意数量的字符如中文,英文,各类符号,数字组成。 这…

ES-极客学习第二部分ES 入门

基本概念 索引、文档、节点、分片和API json 文档 文档的元数据 需要通过Kibana导入Sample Data的电商数据。具体参考“2.2节-Kibana的安装与界面快速浏览” 索引 kibana 管理ES索引 在系统中找到kibana配置文件(我这里是etc/kibana/kibana.yml) vim /…

redis(1)

redis 缓存穿透 1.什么是缓存穿透呢? 当客户端访问数据库一个不存在的数据时,数据库查询不到也不会添加在缓存中,所以客户端的每次访问都会去查数据库,这有可能会导致数据库垮掉。 2.解决方案 1.缓存空数据,即便查…

Oracle与Java JDBC数据类型对照

Oracle Database JDBC开发人员指南和参考 SQL Data TypesJDBC Type CodesStandard Java TypesOracle Extension Java Types CHAR java.sql.Types.CHAR java.lang.String oracle.sql.CHAR VARCHAR2 java.sql.Types.VARCHAR java.lang.String oracle.sql.CHAR LONG jav…

vue使用sm2对手机号邮箱等加签名,数据完整性

vue使用sm2对手机号邮箱等加签名,数据完整性 1、安装依赖 npm install --save sm-crypto2、在utils文件下新建sm2Util.js // sm2Util.js const SM2 require(sm-crypto).sm2; const publicKey woshigongyao // 公钥 const privateKey woshisiyao // 私钥/* * 加…

esp32UART串口外设(Arduino)

通用异步接收器/发送器 (UART) 介绍 通用异步接收器/发送器 (UART) 是一种硬件功能,它使用广泛采用的异步串行通信接口(如 RS232、RS422 和 RS485)处理通信(即时序要求和数据成帧&…

个人笔记:分布式大数据技术原理(二)构建在 Hadoop 框架之上的 Hive 与 Impala

大家想了解更多大数据相关内容请移驾我的课堂: 大数据相关课程 剖析及实践企业级大数据 数据架构规划设计 大厂架构师知识梳理:剖析及实践数据建模 有了 MapReduce,Tez 和 Spark 之后,程序员发现,MapReduce 的程序写起来真麻烦。他们希望简化这个过程。这就好比你有了汇编…

Vue-9、Vue事件修饰符

1、prevent 阻止默认事件 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>事件修饰符</title><!--引入vue--><script type"text/javascript" src"https://cdn.jsdeliv…

用html和css实现一个加载页面【究极简单】

要创建一个简单的加载页面&#xff0c;你可以使用 HTML 和 CSS 来设计。以下是一个基本的加载页面示例&#xff1a; HTML 文件 (index.html): <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"…