当前位置: 首页 > news >正文

.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 处于维护模式,不再接收重大更新。

 

相关文章:

  • EasyExcel 校验后导入
  • 初识React(二)响应事件、state、useState
  • 性能分析-CPU知识
  • 内外网数据交换发展进程:安全与便捷并行
  • 甘特图/横道图制作技巧 - 任务组
  • 为什么苹果 Mac 电脑需要使用清理软件?
  • 系统架构评估_1.相关概念
  • 神经网络中的超参数调整
  • 【Java】maven常用命令
  • 如何备考2025年AMC8竞赛?吃透2000-2024年600道真题(免费送题)
  • xilinx 7系列fpga上电配置
  • Svg Flow Editor 原生svg流程图编辑器(五)
  • 免费SSL通配符证书/SSL泛域名证书获取教程
  • 爬虫入狱笔记——xx政府网站公开政策数据
  • [挖坟]如何安装Shizuku和LSPatch并安装模块(不需要Root,非Magisk)
  • @angular/forms 源码解析之双向绑定
  • 03Go 类型总结
  • Angular Elements 及其运作原理
  • Java Agent 学习笔记
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • js算法-归并排序(merge_sort)
  • LeetCode29.两数相除 JavaScript
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • swift基础之_对象 实例方法 对象方法。
  • text-decoration与color属性
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • Vue2.0 实现互斥
  • XForms - 更强大的Form
  • 复杂数据处理
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 后端_ThinkPHP5
  • 基于 Ueditor 的现代化编辑器 Neditor 1.5.4 发布
  • 前端面试之CSS3新特性
  • 如何在 Tornado 中实现 Middleware
  • 提醒我喝水chrome插件开发指南
  • 追踪解析 FutureTask 源码
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #14vue3生成表单并跳转到外部地址的方式
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • $L^p$ 调和函数恒为零
  • (06)金属布线——为半导体注入生命的连接
  • (4)Elastix图像配准:3D图像
  • (C语言)逆序输出字符串
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (译)计算距离、方位和更多经纬度之间的点
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉