.NET Standard、.NET Framework 、.NET Core三者的关系与区别?

.NET Standard、.NET Framework 和 .NET Core 是 .NET 平台生态中的三个关键概念,它们之间存在明确的关系和显著的区别。下面分别阐述它们各自的角色以及相互间的关系:

 

.NET Standard

角色: .NET Standard 是一套正式的 API 规范,定义了 .NET 平台上一组通用的基础类库(BCL)和功能接口。它旨在确保跨不同 .NET 实现(如 .NET Framework、.NET Core、Xamarin、Mono 等)的一致性和兼容性。开发人员可以按照 .NET Standard 规范编写类库代码,确保这些代码能够在遵循相同或更高版本标准的任何 .NET 实现中运行。

是否包含其他两者: .NET Standard 不包含 .NET Framework 或 .NET Core。它是一个抽象的规范集合,不是一个具体的实现框架。各个 .NET 实现(包括 .NET Framework 和 .NET Core)需按照 .NET Standard 规范来实现相应的 API,从而使得符合该标准的类库能在这些实现上运行。

 

.NET Framework

角色: .NET Framework 是一个专为 Windows 平台设计和优化的开发框架,提供了丰富的类库、运行时环境(CLR)、开发工具和应用程序模型(如 WinForms、WPF、ASP.NET 等)。它主要用于构建桌面应用程序、Web 应用和服务端应用,并且完全依赖于 Windows 操作系统的特性和服务。

是否包含其他两者: .NET Framework 不直接包含 .NET Core,因为它们是两个独立的、目标定位不同的框架。然而,.NET Framework 确实包含 实现了某个特定版本 .NET Standard 的类库,这意味着它支持符合该标准的跨平台代码执行。尽管如此,.NET Framework 本身仍然是一个专有且不跨平台的实现。

 

.NET Core

角色: .NET Core 是一个开放源代码、跨平台的 .NET 实现,最初设计目标是提供轻量级、模块化且高性能的开发框架,适用于云、微服务、容器化和物联网场景。它包含了一个现代的运行时(CoreCLR)、一组核心类库以及诸如 ASP.NET Core、EF Core 等组件。随着时间推移,.NET Core 成为了 .NET 平台的主力发展分支,逐渐合并了 .NET Framework 的许多功能,并且支持 Windows、Linux、macOS 等多种操作系统。

 

是否包含其他两者: .NET Core 不包含 .NET Framework,它们是并行存在的两个不同框架,虽然功能上有重叠和融合的趋势。与 .NET Framework 类似,.NET Core 也实现了 某个特定版本的 .NET Standard,允许其运行符合标准的跨平台代码。随着 .NET Core 的发展,它逐渐取代了 .NET Framework 在跨平台和云端开发的地位,并且在后续的 .NET 5 及更高版本中继续演进。

 

三者区别

它们的区别包括:

  1. 跨平台性:.NET Core 具有更好的跨平台性,而.NET Framework 主要用于 Windows。
  2. 开源性:.NET Core 是开源的,而.NET Framework 不是。
  3. 应用场景:.NET Framework 适用于传统的 Windows 应用,.NET Core 适用于现代的跨平台应用。

 

三者之间的关系

1..NET Core 和.NET Framework 都实现了.NET Standard 定义的 API。
2..NET Standard 不包含.NET Framework 或.NET Core,它只是一个规范。
3..NET Framework 不包含.NET Core,它们是不同的框架。
4..NET Core 本身不包含.NET Framework,但它实现了与.NET Framework 相同的一些 API。

总之,.NET Standard 提供了一个通用的 API 规范,.NET Framework 和.NET Core 则是具体的实现。通过实现.NET Standard,它们可以确保代码的兼容性和可移植性。

 

总结

  • .NET Standard 是一个规范,定义了跨 .NET 实现的标准 API 集合,它被 .NET Framework 和 .NET Core 等实现所遵循。
  • .NET Framework 和 .NET Core 是两个独立的 .NET 实现,分别针对 Windows 平台的传统应用开发和跨平台的现代应用开发。
  • .NET Framework 和 .NET Core 都包含了实现相应版本 .NET Standard 的类库,以支持跨平台代码的复用,但它们并不包含彼此。随着时间的推移,.NET Core 已成为 .NET 平台发展的主线,而 .NET Framework 处于维护模式,不再接收重大更新。

 

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

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

相关文章

项目经理常用的工具模型有哪些?

项目经理常用的工具模型包括但不限于以下几种: 甘特图:这是一种将大型项目划分为几个阶段,并展示项目进度的工具。在甘特图中,可以清晰地看到每个任务的开始和结束时间,以及任务之间的依赖关系。 工作分解结构&#…

Leetcode刷题-哈希表详细总结(Java)

哈希表 当我们想使⽤哈希法来解决问题的时候,我们⼀般会选择如下三种数据结构。 数组set (集合)map(映射) 当我们遇到了要快速判断⼀个元素是否出现集合⾥的时候,就要考虑哈希法。如果在做⾯试题⽬的时候…

解决npm install报错npm ERR Unsupported URL Type “npm:“: npm:vue-loader@^16.1.0 问题

node版本以及npm版本太旧会造成这个问题 1.下载安装nvm 网址:Releases coreybutler/nvm-windows GitHub 2.安装 后使用nvm命令安装切换node版本 安装node版本: nvm install 12.22.12 等待安装完成,使用命令切换版本 nvm use 12.22.1…

Samba 总是需要输入网络凭证

输入网络凭证: 用户名是 cat /etc/samba/smb.conf,查看 valid users mxw 为用户名。而不是其他账号名或者用户名,更不是登录计算机时的计算机名; 密码是 需要记住安装samba服务器时,自己设置的password&#xff1…

LED发光模组的故障及解决方法

LED发光模组在应用过程中可能会出现各种故障,正确诊断并采取相应的解决方法至关重要,以下是一些常见故障现象及其解决方法的总结: 一、现象:所有的LED闪烁 问题:接触不良 解决方法:检查并重新固定松动处&am…

单片机为什么还在用C语言编程?

单片机产品的成本是非常敏感的。因此对于单片机开发来说,最重要的是在极其有限的ROM和RAM中实现最多产品的功能。或者反过来说,实现相同的产品功能,所需要的ROM和RAM越小越好,在开始前我有一些资料,是我根据网友给的问…

linux网络预备

网络预备 网络协议初识 协议分层 打电话例子 在这个例子中, 我们的协议只有两层; 但是实际的网络通信会更加复杂, 需要分更多的层次。 分层最大的好处在于 “封装” 。 OSI七层模型 OSI(Open System Interconnection,开放系统互连)七层网…

Datacom HCIP笔记-路由策略与路由控制 之二

路由策略和策略的区别? 路由策略: 操作的对象是路由表条目, 实现路由过滤,从而实现访问控制,引入时过滤,发送和接收路由时过滤。 通过配置cost,来实现路径的控制。 策略路由: 对…

【Vue3源码学习】— CH2.8 Vue 3 响应式系统小结

Vue 3 响应式系统小结 1.核心概念1.1 Proxy和Reflect1.2 响应式API1.3 依赖收集与更新触发1.4 触发更新(Triggering Updates):1.5 副作用函数(Effect)1.6 计算属性和观察者1.7 EffectScope1.8 性能优化: 2.…

GPT-5将在6月发布前进行「红队进攻测试」

“GPT-5将在6月发布”的消息刷屏了AI朋友圈。这则消息之所以被无数人相信并转发,是因为已经有不少技术人员在社交平台上晒出了「红队进攻测试」邀请。 基于 GPT系列庞大的用户体量和影响力,OpenAI 将更加重视GPT-5 的安全性,作为GPT-5上市前的…

【编译原理】手工打造语法分析器

重点: 语法分析的原理递归下降算法(Recursive Descent Parsing)上下文无关文法(Context-free Grammar,CFG) 关键点: 左递归问题深度遍历求值 - 后续遍历 上一篇「词法分析器」将字符串拆分为…

AudioLDM2全文翻译

AUDIOLDM 2: LEARNING HOLISTIC AUDIO GENERAT I O N W I T H SELF-SUPERVISED PRETRAINING 由于原本在notion上写的,文章中的文字链接大部分是我查询的一些资料,做的内部引用,所以无法展示。文章图片部分请参考原论文,相关工作部…

水经微图网页版309项功能清单

让每一个人都有自己的地图! 水经微图(简称“微图”)网页版,是越来越受到大家的亲睐了! 就后台统计数据来看,日均IP数据在稳步增长,老访客的占比最高达35%以上。 在上上周,还分别有…

PMP考试费太贵,能不能自学?

最近6月PMP考试报名工作正在如火如荼的进行,可能大家对于考试费用已经有了基本了解,今天给大家分享一下PMP证书考下来需要花费多少?能不能自己学习? PMP是什么? PMP项目管理专业人士资格认证,由项目管理协…

最讨厌这种字符串问题了!!

题目:洛谷P1957口算练习题 题目大意描述: 第一行输入一个整数表示接下来要进行多少次运算,接下来每行输入一个字母c和两个数字x,y(输入的字母为a/b/c,分别表示要进行,-,*运算)或者就输入两个数…

uniapp - 微信小程序 - 使用uCharts的一些问题

文章目录 uniapp - 微信小程序 - 使用uCharts的一些问题一、开发者工具显示正常,真机调试统计图不随页面滚动二、数据过多开启滚动条,无法滑动滚动条三、饼图点击不显示提示窗/点击位置bug、多个同类型统计图点击不显示提示框问题四、 formatter 自定义 …

sort(); .front()、.back()、.begin() 和 .end()

在 C 中&#xff0c;std::sort 函数默认使用小于&#xff08;<&#xff09;运算符来比较元素。对于 std::vector<std::vector<int>> 类型的容器&#xff0c;std::sort 会逐个比较容器中的元素&#xff0c;首先比较第一个元素&#xff08;即区间的左端点&#xf…

pandas中isna() 函数的应用

isna() 函数用于检查 DataFrame 或 Series 中的每个元素是否为缺失值&#xff08;NaN&#xff09;。如果元素是缺失值&#xff0c;则返回 True&#xff1b;否则返回 False。 下面是一个示例&#xff0c;说明如何使用 isna() 函数&#xff1a; import pandas as pd import num…

ArcGIS Pro怎么进行挖填方计算

在工程实施之前&#xff0c;我们需要充分利用地形&#xff0c;结合实际因素&#xff0c;通过挖填方计算项目的标高&#xff0c;以达到合理控制成本的目的&#xff0c;这里为大家介绍一下ArcGIS Pro中挖填方计算的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的…

干了三年外包。。。忘了什么是CICD。。。

干了三年外包。。。忘了什么是CICD。。。 CI/CD(持续集成与持续交付) 是一种软件开发实践&#xff0c;它可以帮助我们更快地交付高质量的软件产品。CI/CD的核心思想是将软件开发过程中的各个阶段自动化&#xff0c;从而减少人工干预&#xff0c;提高开发效率和产品质量。本文将…