.NET 简介

.NET 是一个免费的跨平台 开源开发人员平台 ,用于构建 多种应用程序。 它可以运行 以多种语言编写的程序, C# 是最受欢迎的程序。 它依赖于许多大规模应用在生产中使用的高性能运行时。

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

.NET 平台旨在提供工作效率、性能、安全性和可靠性。 它通过 垃圾回收器(GC)提供自动内存管理。 由于使用了 GC 和严格的语言编译器,.NET 的类型安全且内存安全。 它通过 async/awaitTask 基元实现并发。 它包括一组具有广泛功能的库,并针对多个作系统和芯片体系结构的性能进行了优化。

.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# 的 foreach 语句允许枚举任意集合。 基于模式的优化使诸如 List<T> 这类集合能够被简单高效地处理。 可以将资源管理留给垃圾回收,但可以通过 IDisposableusing 语句中的直接语言支持根据提示进行清理。

支持同时进行多项任务对几乎所有工作负载都是至关重要的。 这可能是客户端应用程序在保持 UI 响应的同时执行后台处理、处理数千个同时请求的服务、响应大量同时刺激的设备或并行处理计算密集型作的高功率计算机。 异步编程支持是 C# 编程语言的一流功能,它提供asyncawait和关键字,使编写和撰写异步作变得容易,同时仍然享受语言必须提供的所有控制流构造的全部优势。

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

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

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

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

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

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

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

NuGet 是适用于 .NET 的包管理器。 它包含数十万个包,这些包实现了许多方案的功能。 大多数应用依赖于 NuGet 包来获得某些功能。 NuGet 库由 Microsoft 维护。

免费和开放源代码

.NET 是免费的开放源代码,是 .NET Foundation 项目。 .NET 由 gitHub 上的Microsoft和社区在 多个存储库中维护。

.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。

后续步骤