.NET 简介

embedded/2024/11/22 20:25:55/

文章目录

  • 一、组件
  • 二、免费且开源
  • 三、支持
  • 四、.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.ppmy.cn/embedded/139699.html

相关文章

【网络安全 | 漏洞挖掘】邮件HTML注入

文章目录 Email 中的 HTML 注入漏洞漏洞挖掘过程1. 初步信息收集2. 发现私信功能3. 功能测试与 HTML 注入测试测试步骤请求拦截与分析4. 绕过防护机制绕过方法附加威胁漏洞影响漏洞报告与奖励Email 中的 HTML 注入漏洞 HTML 注入是一种安全漏洞,攻击者通过将任意 HTML 标签注…

vue中路由缓存

vue中路由缓存 问题描述及截图解决思路关键代码及打印信息截图 问题描述及截图 在使用某一平台时发现当列表页码切换后点击某一卡片进入详情页后,再返回列表页时页面刷新了。这样用户每次看完详情回到列表页都得再重新输入自己的查询条件,或者切换分页到…

【linux】插入新硬盘如何配置:格式化、分区、自动挂载(Ubuntu)

文章目录 具体方法GPT分区表(GUID Partition Table)(建议都用这种分区方法)MBR分区表方法(最大支持2TB分区)(Master Boot Record) 附加:如何查看硬盘的型号另外&#xff…

刘艳兵-DBA042-下述哪些文件是在CREATE DATABASE命令中创建的?

下述哪些文件是在CREATE DATABASE命令中创建的? A 口令文件 B 静态参数文件 C SYSAUX表空间数据文件 D SYSTEM表空间数据文件 E 动态参数文件 F 联机重组日志文件 G 控制文件 答: C SYSAUX表空间数据文件 D SYSTEM表空间数据…

【c++入门】打开新世界大门之初遇c++

前言 在学习了c语言,初阶数据结构后,我们正式走进c世界大门 目录 前言 一、认识c 二、缺省参数 三、函数重载 四、引用 4.1什么是引用? 4.2 使用场景 4.2.1 做参数 4.2.2做函数返回值 4.3引用和指针的区别 五、内联函数 六、auto关…

FIFO和LRU算法实现操作系统中主存管理

FIFO&#xff0c;用数组实现 1和2都是使用nextReplace实现新页面位置的更新 1、不精确时间&#xff1a;用ctime输出运行时间都是0.00秒 #include <iostream> #include <iomanip> #include<ctime>//用于计算时间 using namespace std;// 页访问顺序 int pa…

基于微信小程序的河池旅游设计与实现

一、前言 随着移动互联网的快速发展&#xff0c;微信小程序以其便捷性、无需安装等优势受到广泛关注。河池拥有丰富的旅游资源&#xff0c;包括独特的自然风光&#xff08;如巴马长寿之乡的山水、宜州下枧河风光等&#xff09;、多彩的民族文化&#xff08;如壮族铜鼓文化、仫佬…

mysqldbcompare 使用及参数详解

限制 该工具将每行的主键读取到数据结构中&#xff0c;然后用于生成每行的校验和。主键和校验和随后被排序并比较&#xff0c;以检测哪些行存在差异。由于这种设计&#xff0c;工具在处理非常大的表&#xff08;许多行&#xff09;时可能会表现出较慢的性能&#xff0c;特别是…