.NET 相关概念

在这里插入图片描述

.NET 和 .NET SDK

.NET 介绍

.NET 是一个由 Microsoft 开发和维护的广泛用于构建各种类型应用程序的开发框架。它是一个跨平台、跨语言的开发平台,提供了丰富的类库、API和开发工具,支持开发者使用多种编程语言(如C#、VB.NET、F#等)来构建应用程序。.NET 应用程序可以运行在多种操作系统上,包括Windows、macOS和Linux,并且支持从桌面应用到Web应用、移动应用、云服务、游戏和物联网(IoT)应用等多种应用类型。

.NET 的核心组件包括公共语言运行时(CLR)、基础类库(BCL)和.NET Framework 或 .NET Core(现在统称为 .NET 5+)。CLR 是.NET应用程序的执行引擎,负责编译、加载和运行.NET代码,并提供了垃圾回收、类型安全性、异常处理和多线程支持等功能。BCL 是一组丰富的类库,为开发者提供了构建应用程序所需的各种功能,如文件操作、数据访问、网络通信、用户界面设计等。

.NET SDK 介绍

.NET SDK(Software Development Kit,软件开发工具包)是用于开发和构建.NET应用程序的一组工具和库的集合。它包含了开发.NET应用程序所需的一切,包括编译器、运行时、库和命令行工具等。使用.NET SDK,开发者可以方便地创建、编译、测试、运行和部署.NET应用程序。

.NET SDK 的主要功能包括:

  • 提供命令行工具(CLI),允许开发者通过命令行界面执行各种开发任务。
  • 管理.NET 应用程序的依赖项,通过NuGet包管理器下载和安装所需的库和框架。
  • 支持版本管理,确保在不同环境中的一致性和稳定性。
  • 跨平台支持,允许开发者在Windows、macOS和Linux等操作系统上开发和部署.NET应用程序。

.NET 和 .NET SDK 的区别

  1. 作用范围:.NET 是一个广泛的开发框架,提供了构建应用程序所需的一切基础设施和类库。而.NET SDK 则是用于开发和构建.NET应用程序的具体工具集,它包含了构建应用程序所需的所有工具和库。
  2. 组成:.NET 框架主要由CLR、BCL和.NET Framework 或 .NET Core(现在统称为 .NET 5+)组成。而.NET SDK 则包含了编译器、运行时、库、命令行工具等多个组件。
  3. 使用目的:.NET 是为了提供开发应用程序的基础环境和功能。而.NET SDK 则是为了简化开发过程,提供从创建项目到部署应用程序的一系列便捷工具。

简而言之,.NET 是一个开发框架,而.NET SDK 是一组用于开发和构建.NET应用程序的工具和库的集合。开发者需要安装.NET SDK 来使用.NET 框架开发应用程序。

.NET Framework 和 .NET Core

.NET Framework 的详细介绍

.NET Framework 是由 Microsoft 开发的一个用于 Windows 操作系统的托管代码编程模型。它提供了一个全面的、一致的编程环境,使得开发者能够使用多种编程语言(如 C#、VB.NET、F# 等)来构建具有视觉上引人注目的用户体验的应用程序,实现跨技术边界的无缝通信,并支持各种业务流程。

.NET Framework 的核心组件包括公共语言运行时(CLR)和.NET Framework 类库。CLR 是.NET应用程序的执行引擎,负责代码的执行、内存管理、线程管理、远程处理等核心服务,并提供类型安全、安全性、版本控制和部署支持等。类库则是一个综合性的面向对象的可重用类型集合,提供了开发各种应用程序所需的基本功能。

.NET Core 的详细介绍

.NET Core 是 Microsoft 开发的一个免费、开源、跨平台的计算机软件框架,它是.NET Framework的新一代版本。与.NET Framework不同,.NET Core 旨在跨平台运行,支持 Windows、Linux 和 macOS 等多个操作系统。它不仅继承了.NET Framework的部分类库,还通过包化(Packages)管理方式实现了更灵活的组件获取,使得开发者可以只获取项目所需的组件,从而优化了开发过程。

.NET Core 的核心功能包括高性能的 JIT(即时编译)技术、优化的运行时、多线程处理和异步编程支持等。它还提供了丰富的开发工具和库,以及强大的社区支持和生态系统。开发者可以使用 C#、VB.NET、F# 等多种编程语言来构建各种类型的应用程序,包括 Web 应用程序、移动应用程序、桌面应用程序、云服务、微服务、API、游戏以及物联网应用程序等。

.NET Framework 和 .NET Core 的区别

  1. 跨平台性:.NET Core 是跨平台的,支持 Windows、Linux 和 macOS 等多个操作系统。而.NET Framework 主要针对 Windows 操作系统。
  2. 开源与闭源:.NET Core 是开源的,任何人都可以访问其源代码并贡献代码。而.NET Framework 是闭源的,由 Microsoft 进行开发和维护。
  3. 更新方式:.NET Core 通过 NuGet 包管理器来更新新版本,使得开发者可以更灵活地管理项目依赖。而.NET Framework 通常通过 Windows 操作系统的更新来发布新版本。
  4. 性能与体积:.NET Core 通常比.NET Framework 具有更好的性能和更小的安装包大小,因为它是为跨平台设计而优化的。
  5. 现代化与兼容性:.NET Core 的 API 设计比.NET Framework 更加现代化和规范化。因此,在.NET Core上编写的应用程序更容易在未来的.NET版本中使用,而.NET Framework开发的应用程序则可能需要进行修改。

总的来说,.NET Core 是一个更加现代化、轻量级和跨平台的开发框架,适合构建跨平台的应用程序;而.NET Framework 则更适用于 Windows 平台上的传统桌面应用程序和 ASP.NET Web 应用程序。随着 Microsoft 将.NET Core 与.NET Framework 合并为.NET 5,未来将以.NET 5+ 为主要的开发平台。

.NET版本进化

.NET 的版本变化是一个持续演进的过程,从最初的.NET Framework开始,经历了多个重要的里程碑,最终发展到现在的.NET 5+版本。以下是.NET 版本变化的一个简要概述:

1. .NET Framework

  • .NET Framework 1.0(2002年):这是.NET平台的第一个版本,主要支持Windows 98、Me、2000和XP操作系统。它包含了公共语言运行时(CLR)和基础类库(BCL)。
  • 后续版本:.NET Framework随后发布了多个版本,包括1.1、2.0、3.0、3.5、4.0、4.5、4.6、4.7和4.8等。每个版本都带来了新特性和改进,例如对ASP.NET、Windows Forms、WPF(Windows Presentation Foundation)、WCF(Windows Communication Foundation)等技术的支持,以及对新操作系统的兼容性更新。

2. .NET Core

  • .NET Core 1.0(2016年6月):这是.NET平台的一个重要转折点,标志着.NET开始支持跨平台开发。.NET Core是一个开源、跨平台的.NET实现,它可以在Windows、Linux和macOS上运行。
  • 后续版本:.NET Core随后发布了多个版本,包括1.1、2.0、2.1、2.2、3.0和3.1等。其中,3.1是一个长期支持版本,提供了广泛的兼容性和稳定性。每个版本都引入了新的特性和改进,例如对性能的提升、对云原生开发的支持、对Docker容器化部署的支持等。

3. .NET 5+

  • .NET 5(2020年11月):这是.NET平台的一个重大更新,它将.NET Core和.NET Framework进行了整合,统一了开发平台。.NET 5提供了跨平台支持,并引入了许多新功能和性能改进。它不再使用“Core”或“Framework”的命名约定,而是采用统一的“.NET”命名。
  • 后续版本:在.NET 5之后,Microsoft继续发布了.NET 6、.NET 7和.NET 8等版本。这些版本都延续了.NET 5的跨平台特性和性能改进,并引入了更多新功能和优化。例如,.NET 6引入了热重载和最小Web API等新特性;.NET 7引入了.NET MAUI(Multi-platform App UI)等新框架;.NET 8则带来了数千项性能改进和新的WinUI 3支持。

.NET的版本变化体现了Microsoft对开发平台的持续投入和创新。从最初的.NET Framework到跨平台的.NET Core,再到统一的.NET 5+,每个版本都带来了重要的特性和改进,为开发者提供了更加强大、灵活和高效的开发环境。随着技术的不断发展,可以期待.NET在未来继续引领开发平台的创新和发展。

总结

  • 不要再使用 “ .NET Core”或“.NET Framework”的称谓了,使用 .NET 5, .NET6 , .NET7, … 这样的称呼, 目前的长期支持版本是.NET 8, 最新的版本是 .NET 9。

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

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

相关文章

09 算术运算符

① 运算符除了用于算数加法以外,还可以用于列表、元组、字符串的连接,但不支持不同类型的对象之间的相加或连接。 print([1, 2, 3] [4, 5, 6]) # 连接两个列表 print((1, 2, 3) (4,)) # 连接两个元组 print(hello 123) # 连接字符串 print(Fa…

开发桌面程序-Electron入门

Electron是什么 来自官网的介绍 Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 总…

与Bug较量:Codigger之软件项目体检Software Project HealthCheck来帮忙

在软件工程师的世界里,与 Java 小程序中的 Bug 作战是一场永不停歇的战役。每一个隐藏在代码深处的 Bug 都像是一个狡猾的敌人,时刻准备着给我们的项目带来麻烦。 最近,我就陷入了这样一场与 Java 小程序 Bug 的激烈较量中。这个小程序原本应…

wget下载github文件得到html文件

从github/gitee下载源文件,本来是22M下载下来只有11k 原因: Github会提供html页面,包括指定的文件、上下文与相关操作。通过wget或者curl下载时,会下载该页面 解决方式: github点击Code一栏的raw按钮,获得源…

【论文复现】Vision Transformer(ViT)

1. Transformer结构 1.1 编码器和解码器 翻译这个过程需要中间体。也就是说,编码,解码之间需要一个中介,英文先编码成一个意思,再解码成中文。 那么查字典这个过程就是编码和解码的体现。首先我们的大脑会把它编码,编…

遍历dom元素下面的子元素的方法,vue中原始标签的ref得到是该元素的dom及下面包含的子dom,与组件ref是引用不同

研究到这个的目的来源是 想用div 遍历方式 替代之前的table tr td 那种框选功能,觉得div灵活,可以随便在外面套层,td与tr之间就不能加div加了布局就乱,然后使用之前的原理( const cellList tableIdR.value.querySelec…

【反转链表 II】python刷题记录

印象中,这是遍历r2了,还好没放弃。 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # self.val val # self.next next class Solution:def reverseBetween(self, head: Optional…

了解Selenium中的WebElement

Selenium中到处都使用WebElement来执行各种操作。什么是WebElement?这篇文章将详细讨论WebElement。 Selenium中的WebElement是一个表示网站HTML元素的Java接口。HTML元素包含一个开始标记和一个结束标记,内容位于这两个标记之间。 HTML元素的重命名 …

SCADA系统易用性的重要性

对于中小企业而言,SCADA系统的易用性至关重要,因为它直接影响到系统的实施效率、员工的接受程度和培训成本。一个易用的SCADA系统可以减少员工对新技术的学习曲线,加快系统的部署速度,并降低长期的维护成本。此外,易用…

Parameter index out of range (2 > number of parameters, which is 1【已解决】

文章目录 1、SysLogMapper.xml添加注释导致的2、解决方法3、总结 1、SysLogMapper.xml添加注释导致的 <!--定义一个查询方法&#xff0c;用于获取日志列表--><!--方法ID为getLogList&#xff0c;返回类型com.main.server.api.model.SysLogModel,参数类型为com.main.se…

Unity UGUI 之 坐标转换

本文仅作学习笔记与交流&#xff0c;不作任何商业用途 本文包括但不限于unity官方手册&#xff0c;唐老狮&#xff0c;麦扣教程知识&#xff0c;引用会标记&#xff0c;如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本&#xff0c;请注意分别 前置知识&#xff1a;…

牛客JS题(三)文件扩展名

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; 正则表达式可选链操作符 题干&#xff1a; 我的答案 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /></head><body><script>/*** 可能…

快速上手,spring boot3整合task实现定时任务

在已经上线的项目中&#xff0c;定时任务是必不可少的。基于spring boot自动装配的原理&#xff0c;我们要集成task定时任务还是非常简单的。只需要简单的两步就可以实现。 1、创建一个spring boot项目&#xff0c;并在项目的启动类&#xff08;也不一定非要是启动类&#xff…

LabVIEW 实现用户授权与管理多项测试项目

在使用 LabVIEW 开发测试软件时&#xff0c;用户授权和项目管理是一个重要的功能。为了确保系统安全性、灵活性和可扩展性&#xff0c;可以设计一个用户管理系统&#xff0c;允许管理员增加或减少用户的测试项目权限。以下是一个详细的实现方案&#xff0c;包括用户授权管理、项…

buu做题(7)

[BJDCTF2020]Mark loves cat 开始的界面没啥东西, 看了下源码好像也没啥东西 用dirsearch扫描一下 有git 泄露 用工具githack下载源码 <?phpinclude flag.php;$yds "dog"; $is "cat"; $handsome yds;foreach($_POST as $x > $y){$$x $y; }f…

GNSS相关资料

常识 GNSS(二)&#xff0c;自动驾驶定位团队的“保护伞”&#xff1a;https://owwjm7oycuv.feishu.cn/docx/BAfsdC34zoN6htx4uUycbvknnub#CiWXdRZfWoqrzmxRptJcH7MYnug GNSS伪距差分和RTK&#xff1a;https://zhuanlan.zhihu.com/p/680687517 关于GNSS技术介绍&#xff08;一&…

江科大/江协科技 STM32学习笔记P6

文章目录 LED闪烁&LE流水&蜂鸣器一、操作STM32的GPIO步骤二、RCC库函数什么是AHB与APB&#xff1f; 三、GPIO库函数GPIO初始化选择IO接口工作方式 四、四种方法实现LED闪灯 LED闪烁&LE流水&蜂鸣器 一、操作STM32的GPIO步骤 1、使用RCC开启GPIO的时钟 2、使用…

CV Method:YOLOv10 vs YOLOv8

文章目录 前言一、介绍二、YOLOv8 and YOLOv10 Comparison1.模型结构YOLOv8&#xff1a;YOLOv10&#xff1a; 2. 推理和时延3. 检测表现4. 参数利用5. 关键比较 总结 前言 YOLOv10已经开源一段时间了&#xff0c;经过我实际使用测试&#xff0c;也确实性能更好一些&#xff0c…

静态IP地址在网络安全中的角色解析与实测分析

在这个网络边界日益模糊的时代&#xff0c;每一次点击、每一次数据传输都有着安全问题。作为网络安全体系中的基石&#xff0c;静态IP地址的角色显得尤为重要而复杂。今天&#xff0c;我们的测评团队将带您深入剖析静态IP地址在网络安全中的多重角色&#xff0c;并通过两家代理…

JavaScript(16)——定时器-间歇函数

开启定时器 setInterval(函数,间隔时间) 作用&#xff1a;每隔一段时间调用这个函数&#xff0c;时间单位是毫秒 例如&#xff1a;每一秒打印一个hello setInterval(function () { document.write(hello ) }, 1000) 注&#xff1a;如果是具名函数的话不能加小括号&#xf…