.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.rhkb.cn/news/300604.html

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

相关文章

34470A是德科技34470A数字万用表

181/2461/8938产品概述: Truevolt数字万用表(34460A、34461A、34465A、34470A)利用是德科技的新专利技术,使您能够快速获得见解、测量低功耗设备并保持校准的测量结果。Truevolt提供全方位的测量能力,具有更高的精度、…

15-1-Flex布局

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 Flex布局1 Flex容器和Flex项目2 Flex 容器属性2.1 主轴的方向2.2 主轴对齐方式…

亚马逊店铺引流:海外云手机的利用方法

在电商业务蓬勃发展的当下,亚马逊已经成为全球最大的电商平台之一,拥有庞大的用户群和交易量。在激烈的市场竞争中,如何有效地吸引流量成为亚马逊店铺经营者所关注的重点。海外云手机作为一项新兴技术工具,为亚马逊店铺的流量引导…

基于SSM的周边乡村旅游小程序

系统实现 游客注册通过注册窗口,进行在线填写自己的账号、密码、姓名、年龄、手机、邮箱等,信息编辑完成后核对信息无误后进行选择注册,系统核对游客所输入的账号信息是否准确,核对信息准确无误后系统进入到操作界面。 游客登录通…

Node.js进阶——Express

文章目录 一、初识Express1、概念2、安装3、使用3、托管静态资源4、nodemon 二、Express路由1、概念2、使用1)简单使用2)模块化路由 三、Express中间件1、介绍2、语法1)基本语法2)next函数作用3)定义中间件函数4&#…

4.7学习总结

java学习 一.Stream流 (一.)概念: Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。Stream流是对集合(Collection)对象功能的增强&…

在python爬虫中如何处理cookie和session

使用python开发爬虫的过程中,遇到需要登录鉴权的一些页面,必不可少的会接触到cookie和session的使用。本文结合自己最近一次爬虫爬坑的经历,介绍在python爬虫中如何使用Cookie和Session Cookie和Session的介绍 Cookie Cookie 是一种用于跟…

脱单微信群|相亲脱单支招|手把手教你脱单

群里有太多优质单身男女生,你的脱单困惑,TA可能也遇到过。抬手在群里滴滴,即刻拥有一群有过相同问题的友友和运营客服帮忙。 点我进脱单群 点击 情感脱单问题,直接私信给樱桃情感老师,保护个人隐私和提升问题解决效率…

零信任安全模型:构建未来数字世界的安全基石

在数字化转型的浪潮中,云原生技术已成为推动企业创新和灵活性的关键力量💡。然而,随着技术的进步和应用的广泛,网络安全威胁也日益严峻🔓,传统的网络安全模型已经难以应对复杂多变的网络环境。在这样的背景…

【代码随想录】哈希表

文章目录 242.有效的字母异位词349. 两个数组的交集202. 快乐数1. 两数之和454. 四数相加 II383. 赎金信15. 三数之和18. 四数之和 242.有效的字母异位词 class Solution {public boolean isAnagram(String s, String t) {if(snull || tnull || s.length()!t.length()){return …

性能优化-如何爽玩多线程来开发

前言 多线程大家肯定都不陌生,理论滚瓜烂熟,八股天花乱坠,但是大家有多少在代码中实践过呢?很多人在实际开发中可能就用用Async,new Thread()。线程池也很少有人会自己去建,默认的随便用用。在工作中大家对…

什么是GIF?MP4视频如何转换成GIF动图格式?

一,什么是GIF GIF的全称是Graphics Interchange Format,可译为图形交换格式,用于以超文本标志语言(Hypertext Markup Language)方式显示索引彩色图像,在因特网和其他在线服务系统上得到广泛应用。GIF是一种…

NzN的数据结构--二叉树part1

你叉叉,让你学数据结构你不学;你叉叉,让你看二叉树你不看。 今天我们来一起学习二叉树部分,先赞后看是好习惯。 一、树的概念及结构 1. 树的概念 树是一种非线性的数据结构,它是由n(n>0)个有…

合并主分支到子分支

参考:【Git】合并分支出现 Please enter a commit message to explain why this merge is necessary.-CSDN博客 git 如何将主分支(master)合并到子分支上_git 将主分支合并到子分支-CSDN博客 1、先切换到主分支master git checkout master 2、把主分支代码拉到本地…

【Threejs进阶教程-效果篇】1.Threejs文字与css2d/css3d技术

Threejs文字与css2d/css3d技术 学习ThreeJS的捷径学习之前先搞清楚自己想要什么样的效果贴图文字准备一张带文字的png贴图使用sprite来进行贴图实现2D始终面朝相机的文字使用planeGeometry来贴图实现3D文字使用planeGeometry来贴图实现伪3D文字动态贴图文字html2Canvas 文字几何…

Java8关于Function接口

Java学习-Function接口 1 函数式接口简介和学习地址2 两种常见的函数式接口2.1 Runnable:执行接口,不接收参数,也无返回结果。2.2 Consumer:作为消费接口,接收一个参数,无返回结果。 3 初识3.1 定义Functio…

Android详细介绍POI进行Word操作(小白可进)

poi-tl是一个基于Apache POI的Word模板引擎,也是一个免费开源的Java类库,你可以非常方便的加入到你的项目中,并且拥有着让人喜悦的特性。 一、使用poi前准备 1.导入依赖: 亲手测过下面Android导入POI依赖的方法可用 放入这个 …

OSPF实例是什么?

OSPF实例是什么? **OSPF实例指的是一个OSPF路由进程,它是在一个设备上运行的单独的OSPF路由协议实体**。 在详细解释这个概念之前,需要了解OSPF(Open Shortest Path First)是一种内部网关协议(IGP&#x…

hive图形化客户端工具

hive准备 创建测试数据 以root用户登录,使用hive命令启动hive。 创建库 create database testhivedb; 创建表 create table testhivedb.testhivetable( id int ,name string ); 插入数据 insert into testhivedb.testhivetable values (1,cc); insert into…

Vscode连接WSL2当中的jupyter

主要解决办法参考自这篇博客 1. 在WSL当中安装jupyter 这个随便找一篇博客即可,比如这篇,也可以根据现有的环境参考其它博客内容 2. 使用jupyter创建一个虚拟环境 首先激活想要添加的虚拟环境后,输入命令安装库: pip install ipykernel …