.NET 简介

文章目录

  • 一、组件
  • 二、免费且开源
  • 三、支持
  • 四、.NET 生态系统

在这里插入图片描述
在这里插入图片描述


.NET 是一个免费的跨平台开放源代码开发人员平台,用于生成多种类型的应用程序。 .NET 可以运行使用多种语言编写的程序,其中 C# 是最常用的语言。 .NET 依赖于许多大规模应用在生产中使用的高性能运行时。

若要了解如何下载 .NET 并开始编写第一个应用,请参阅入门指南。

.NET 平台专为实现高效工作、性能、安全性和可靠性而设计。 它通过垃圾回收器 (GC) 提供自动内存管理。 由于使用了 GC 和严格的语言编译器,.NET 的类型安全且内存安全。 它通过 async/await 和 Task 基元实现并发。 .NET 包含大量库,这些库具有广泛的功能,并针对多个操作系统和芯片体系结构的性能进行了优化。

.NET 具有以下设计亮点:

  • 生产力是全栈的,包括运行时、库、语言和工具,这些都有助于改进开发人员的用户体验。
  • “安全代码”是主要的计算模型,而“不安全代码”可实现额外的手动优化。
  • 支持静态代码和动态代码,可实现各种不同场景。
  • 本机代码互操作和硬件内部函数成本低且保真度高(原始 API 和指令访问)。
  • 代码可跨平台(OS 和芯片架构)移植,而平台目标则可以实现专业化和优化。
  • 借助通用编程模型的专用实现,可以实现跨编程领域(云、客户端、游戏)的适应性。
  • OpenTelemetry 和 gRPC 等行业标准比定制解决方案更受青睐。

.NET 由 Microsoft 和社区维护。 它定期更新,以确保用户将安全可靠的应用程序部署到生产中。

一、组件

.NET 包括以下组件:

  • 运行时 – 执行应用程序代码。
  • 库 – 提供实用工具功能,如 JSON 分析。
  • 编译器 – 将 C#(和其他语言)源代码编译为(运行时)可执行代码。
  • SDK 和其他工具 – 支持使用新式工作流生成和监视应用。
  • 应用堆栈 – 例如 ASP.NET Core 和 Windows 窗体,支持编写应用。

运行时、库和语言是 .NET 堆栈的重要组成部分。 高级组件(例如 .NET 工具)和应用堆栈(例如 ASP.NET Core)基于这些重要部分生成。 C# 是 .NET 的主要编程语言,.NET 的大部分内容都是用 C# 编写的。

C# 面向对象,运行时支持对象方向。 C# 需要垃圾回收,而运行时提供跟踪垃圾回收器。 库(以及应用堆栈)将这些功能塑造成概念和对象模型,使开发人员能够在直观的工作流中高效编写算法。

核心库公开了数千种类型,其中许多类型与 C# 语言集成并为 C# 语言提供支持。 例如,C# 的 foreach 语句用于枚举任意集合。 基于模式的优化使 List 等集合能够简单高效地处理。 可以将资源管理留给垃圾回收,但可以通过 IDisposable 和 using 语句中的直接语言支持根据提示进行清理。

支持同时执行多项操对于几乎所有工作负载至关重要。 这些操作可能是在保持 UI 响应的同时执行后台处理的客户端应用程序、处理数千个同时请求的服务、响应大量同时刺激的设备,或者并行处理计算密集型操作的高性能计算机。 异步编程支持是 C# 编程语言的一流功能,它提供 async 和 await 关键字,可以轻松编写和组合异步操作,同时仍然体验该语言提供的所有控制流构造的全部好处。

类型系统提供重要的广度,在某种程度上同样迎合了安全性、描述性、动态性和本机互操作性。 首先,类型系统支持面向对象的编程模型。 它包括类型、(单基类)继承、接口(包括默认方法实现)和虚拟方法调度,为面向对象允许的所有类型分层提供合理的行为。 泛型类型是一种普遍功能,可用于将类专用于一个或多个类型。

.NET 运行时通过垃圾回收器提供自动内存管理。 对于任何语言,其内存管理模型可能是其最具决定性的特征。 这适用于 .NET 语言。 .NET 具有一个自我调整的跟踪 GC。 它用于在一般情况下提供“不动手”操作,同时为更极端的工作负载提供配置选项。 当前的 GC 是多年投资和从大量工作负载中学习的结果。

与 .NET 的 GC 托管的类型相比,值类型和堆栈分配的内存块提供了对数据和本机平台互操作更直接、低级别的控制。 .NET 中的大多数基元类型(例如整数类型)都是值类型,用户可以使用类似的语义定义自己的类型。 .NET 的泛型系统完全支持值类型,这意味着 List 这样的泛型类型可以提供值类型集合的平面无开销内存表示。

反射是一种“程序即数据”范例,使程序的一个部分根据程序集、类型和成员动态查询和调用另一个部分。 这对于后期绑定编程模型和工具非常有用。

异常是 .NET 中的主要错误处理模型。 异常的优势在于,错误信息不需要在方法签名中表示,也不需要由每个方法处理。 正确的异常处理对于应用程序的可靠性至关重要。 为了防止应用崩溃,可以有意处理代码中的预期异常。 崩溃的应用比具有未定义行为的应用更可靠且可诊断。

应用堆栈(例如 ASP.NET Core 和 Windows 窗体)生成并利用低级库、语言和运行时。 应用堆栈定义了应用的构造方式及其执行生命周期。

SDK 和其他工具可在开发人员桌面上和持续集成 (CI) 中带来新式开发人员体验。 新式开发人员体验包括能够生成、分析和测试代码。 .NET 项目通常可以通过单个 dotnet build 命令生成,该命令可协调还原 NuGet 包并生成依赖项。

NuGet 是适用于 .NET 的包管理器。 其中包含数十万个包,这些包可实现多种场景的功能。 大多数应用依赖于 NuGet 包来实现某些功能。 NuGet 库由 Microsoft 维护。

二、免费且开源

.NET 是免费的开放源代码,并且是一个 .NET 基金会项目。 .NET 由 Microsoft 和 GitHub 上的社区在几个存储库中维护。

.NET 源和二进制文件获得了 MIT 许可证许可。 附加许可证适用于 Windows。

三、支持

.NET 受到多个组织的支持,这些组织致力于确保 .NET 可以在多个操作系统上运行并保持最新版本。 它可以在 Arm64、x64 和 x86 体系结构上使用。

根据我们的版本和支持政策,.NET 的新版本在每年 11 月发布。 它每月在星期二补丁日(第二个星期二)进行更新,通常是太平洋时间上午 10 点。

四、.NET 生态系统

.NET 有多个变体,每个变体都支持不同类型的应用。 有多个变体的原因一部分是历史信息相关、一部分是技术相关。

.NET 实现:

  • .NET Framework – 原始 .NET。 它提供对 Windows 和 Windows Server 的广泛功能的访问权限。 在维护方面它得到了积极的支持。
  • Mono – 原始社区和开放源代码 .NET。 一个跨平台 .NET Framework 实现。 积极支持 Android、iOS 和 WebAssembly。
  • .NET (Core) – 新式 .NET。 .NET 的一个跨平台开放源代码实现,已针对云时代进行了反思,同时与 .NET Framework 保持极大的兼容。 积极支持 Linux、macOS 和 Windows。

在这里插入图片描述

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

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

相关文章

Linux之vim模式下全选命令

在Linux系统中,使用Vim编辑器进行全选操作可以通过以下几种方式实现: 1.使用键盘快捷键 按下 ”ggVG”(先按下”g”,再按下”g”,再按下”V”,最后按下”G”)可以全选当前文件内容。其中 ”g…

【学习笔记】大模型调优(llms_tuning)

项目地址:GitHubchunhuizhang/llms_tuning 文章目录 01 TRL SFTTrainer 中的 formatting_func 与 DataCollatorForCompletion02 accelerate ddp 与 trl SFTTrainer03 finetune_llama3_for_RAG04 optimizer Trainer 优化细节(AdamW,grad clip、…

剧本杀门店预约小程序,解锁沉浸式推理体验

一、开发背景 剧本杀作为一种热门娱乐游戏,深受大众的欢迎,但随着市场的快速发展,竞争也在不断加大,对于剧本杀线下商家来说面临着发展创新。 剧本杀线下门店数量目前正在逐渐增加,竞争激烈,而门店的获客…

OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算

本文实现Python库d和OpenCV来实现眼部闭合检测,主要用于评估用户是否眨眼。 步骤一:导入必要的库和设置参数 首先,代码导入了必要的Python库,如dlib、OpenCV和scipy。通过argparse设置了输入视频和面部标记预测器的参数。 from…

candence : 如何利用EXCEL 绘制复杂、多管脚元件

如何利用EXCEL 绘制复杂、多管脚元件 前面的步骤直接略过 我们以STM32F407VEXX 系列 100pin 芯片为例讲解: 1、新建好一个空元件 2、使用阵列,放置管脚 点击 “ ok ” 3、选中所有管脚 右键 “edit properites” 出现如下页面 4、点击 左上角&…

Java多线程回顾总结

目录 一.线程与创建线程方式简介 二.Thread继承 三.实现Runnable接口 四.Callable接口 五.使用线程池 一.线程与创建线程方式简介 线程与进程的区别: 1、一个进程至少包含一个线程 2、比如电脑上QQ,运行起来就是一个进程,QQ可以聊天同时也可以传文…

深度学习基础练习:代码复现transformer重难点

2024/11/10-2024/11/18: 主要对transformer一些比较难理解的点做了一些整理,希望对读者有所帮助。 前置知识: 深度学习基础练习:从pytorch API出发复现LSTM与LSTMP-CSDN博客 【神经网络】学习笔记十四——Seq2Seq模型-CSDN博客 【官方双语】一…

Java连接MySQL(测试build path功能)

Java连接MySQL(测试build path功能) 实验说明下载MySQL的驱动jar包连接测试的Java代码 实验说明 要测试该情况,需要先安装好MySQL的环境,其实也可以通过测试最后提示的输出来判断build path是否成功,因为如果不成功会直…

DQN系列算法详解

代码链接见文末 1. Q-learning 1.1 概述 Q-Learning是一种强化学习算法,目的是通过选择能带来最大长期收益的行为来完成任务。 做事包含瞬时奖励和记忆经验奖励: 在Q-Learning中,每个动作都会带来“瞬时奖励”,同时也会根据过去的经验记住哪些行为更有利。瞬时奖励: 这里…

七、箭头函数及简写、arguments、剩余参数、展开运算符、解构数组与对象、数组常见方法(forEach、map、join、reduce)

1. 箭头函数 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head>…

.NET桌面应用架构Demo与实战|WPF+MVVM+EFCore+IOC+DI+Code First+AutoMapper

目录 .NET桌面应用架构Demo与实战|WPFMVVMEFCoreIOCDICode FirstAutoPapper技术栈简述项目地址&#xff1a;功能展示项目结构项目引用1. 新建模型2. Data层&#xff0c;依赖EF Core&#xff0c;实现数据库增删改查3. Bussiness层&#xff0c;实现具体的业务逻辑4. Service层&am…

【蓝桥杯备赛】深秋的苹果

# 4.1.1. 题目解析 要求某个区间内的数字两两相乘的总和想到前缀和&#xff0c;但是这题重点在于两两相乘先硬算&#xff0c;找找规律&#xff1a; 比如要算这串数字的两两相乘的积之和&#xff1a; 1, 2, 3 1*2 1*3 2*3 1*(23) 2*3 前缀和数组&#xff1a; 1 3 6 发现…

通过 Docker 对 MySQL 做主从复制的时候,因为ip不对导致不能同步。后又因为二进制的偏移量写的不对,导致不能同步的问题

问题一&#xff1a;Error connecting to source slave127.0.0.1:3307. This was attempt 3/86400, with a delay of 30 seconds between attempts. Message: Cant connect to MySQL server on 127.0.0.1:3307 (111) 就是因为这个ip不对&#xff0c;导致的异常。 解决方式&…

【原创】如何备份和还原Ubuntu系统,非常详细!!

前言 我在虚拟机装了一个xfce4的Ubuntu桌面版&#xff0c;外加输入法、IDEA等&#xff0c;我想将这个虚拟机里的系统直接搬到物理机中&#xff0c;那我可以省的再重新装一遍、配置xfce4桌面、修改一堆快捷键还有配置idea了&#xff0c;那直接说干就干。 本教程基于Ubuntu24.0…

VMware 中 虚拟机【Linux系统】固定 ip 访问

注意&#xff1a;这里的 参考链接 VMWare虚拟机设置固定ip_vmware虚拟机修改ip地址-CSDN博客 VMwareCentOS 7 静态IP设置方法&#xff08;保姆级教程&#xff0c;建议收藏&#xff09;-阿里云开发者社区 1&#xff09;查看宿主机中 VMnet8 的网络配置 ipconfig 2&#xff…

Windows环境GeoServer打包Docker极速入门

目录 1.前言2.安装Docker3.准备Dockerfile4.拉取linux环境5.打包镜像6.数据挂载6.测试数据挂载7.总结 1.前言 在 Windows 环境下将 GeoServer 打包为 Docker&#xff0c;可以实现跨平台一致性、简化环境配置、快速部署与恢复&#xff0c;同时便于扩展集成和版本管理&#xff0c…

day03(单片机高级)RTOS

目录 RTOS(实时操作系统) 裸机开发模式 轮询方式 前后台&#xff08;中断方式&#xff09; 改进&#xff08;前后台&#xff08;中断&#xff09;&#xff09;定时器 裸机进一步优化 裸机的其他问题 RTOS的概念 什么是RTOS 为什么要使用 RTOS RTOS的应用场景 RTOS的…

VScode使用Batch Runner插件在终端运行bat文件

搜索并安装插件Batch Runner 创建测试文件 echo off echo "Hello world"按F5运行

Debezium日常分享系列之:Debezium3版本Debezium connector for JDBC

Debezium日常分享系列之&#xff1a;Debezium3版本Debezium connector for JDBC 概述JDBC连接器的工作原理消费复杂的Debezium变更事件至少一次的传递多个任务数据和列类型映射主键处理删除模式幂等写入模式演化引用和大小写敏感性连接空闲超时数据类型映射部署Debezium JDBC连…

Redis-08 Redis集群

Redis槽位 Redis分片 Redis集群优势 主要掌握第三种 为什么槽位是16384&#xff1f; 三主三从&#xff1a; 每个主机只能写在自己的槽位 所以登录redis集群记得加参数 -c 比如redis-cli -a dc123 -p 6380 -c 加了 -c 相当于会进行路由转发&#xff0c;不属于自己槽位的…