什么是 .NET? 简介和概述

目录

功能

使用 .NET

二进制分布

免费且开源

支持

运行时

语言

编译

运行时库

NuGet 程序包管理器

工具

笔记本

CI/CD

部署模型

.NET 历史信息

.NET 生态系统



跨平台开放源代码开发人员平台,用于生成多种类型的应用程序。 .NET 基于许多大规模应用在生产中使用的高性能运行时构建而来。

云应用

跨平台客户端应用

Windows 应用

其他应用类型

功能

借助 .NET 功能,开发人员可以高效地编写可靠的高性能代码。

使用 .NET

.NET 应用和库是通过源代码和项目文件,使用 .NET CLI 或集成开发环境 (IDE)(如 Visual Studio)生成的。

下面的示例是一个最小的 .NET 应用:

项目文件:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0</TargetFramework>
  </PropertyGroup>
</Project>

源代码:

Console.WriteLine("Hello, World!");

可以使用 .NET CLI 生成和运行应用:

dotnet run
Hello, World!

二进制分布

  • .NET SDK:用于开发、生成和测试应用的一组工具、库和运行时。
  • .NET 运行时:用于运行应用的一组运行时和库。

可从以下位置下载它:

免费且开源

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

.NET 源和二进制文件获得了 MIT 许可证许可。 其他许可证适用于 Windows 二进制分发。

支持

Microsoft 支持 Android、Apple、Linux 和 Windows 操作系统上的 .NET。 它可以在 Arm64、x64 和 x86 体系结构上使用。 它在模拟环境中也受支持,例如 macOS Rosetta 2

.NET 的新版本于每年 11 月发布。 奇数年份发布的 .NET 版本是长期支持 (LTS) 版本,支持期为 3 年。 偶数年份发布的版本是标准期限支持 (STS) 版本,支持期为 18 个月。 各版本的质量级别、中断性变更策略以及所有其他方面都是相同的。 有关详细信息,请参阅发布和支持

Microsoft .NET 团队与其他组织合作,以各种方式分发和支持 .NET。

Red Hat 支持在 Red Hat Enterprise Linux (RHEL) 上使用 .NET

Samsung 支持在 Tizen 平台上使用 .NET

运行时

公共语言运行时 (CLR) 是生成所有 .NET 应用的基础。 运行时的基本功能包括:

  • 垃圾回收。
  • 内存安全和类型安全。
  • 对编程语言的全面支持。
  • 跨平台设计。

.NET 有时被称为“托管代码”运行时。 之所以称为“托管”,主要是因为它使用垃圾回收器进行内存管理,还因为它强制执行类型和内存安全。 CLR 虚拟化(或抽象)了各种操作系统和硬件概念,例如内存、线程和异常。

CLR 从一开始就被设计为一个跨平台运行时。 它已被移植到多个操作系统和体系结构。 通常,跨平台 .NET 代码不需要经过重新编译就能在新环境中运行。 相反,你只需安装一个不同的运行时即可运行应用。

运行时为调试器、转储跟踪工具以及可观测性公开各种诊断服务和 API。 可观测性实现主要是围绕 OpenTelemetry 构建的,可实现灵活的应用程序监视和站点可靠性工程 (SRE)。

运行时通过结合使用 P/Invoke、值类型以及跨本机/托管代码边界对值进行 blit 的功能,提供低级别的 C 样式互操作功能。

语言

运行时旨在支持多种编程语言。 Microsoft 支持 C#、F# 和 Visual Basic 语言,这些语言是与社区协作设计的。

  • C# 是一种简单、现代、面向对象和类型安全的编程语言。 它源于 C 语言系列,C、C++、Java 和 JavaScript 程序员很快就可以上手使用。

  • F# 是一种可互操作的编程语言,用于编写简洁、可靠的高性能代码。 F# 编程是面向数据的,其中代码涉及到用函数转换数据。

  • Visual Basic 使用更详细语法,更接近普通人类语言。 对于不熟悉编程的人员来说,学习这种语言可能更简单。

编译

.NET 应用(比如用 C# 等高级语言编写的)被编译为中间语言 (IL)。 IL 是一种紧凑的代码格式,可在任何操作系统或体系结构上受到支持。 大多数 .NET 应用使用在多种环境下支持的 API,只需运行 .NET 运行时。

IL 需要编译为本机代码才能在 CPU 上执行,例如 Arm64 或 x64。 .NET 支持提前 (AOT) 和实时 (JIT) 编译模型。

  • 在 Android、macOS 和 Linux 上,JIT 编译是默认的,AOT 是可选的(例如,使用 ReadyToRun)。
  • 在 iOS 上,除非在模拟器中运行,否则 AOT 是必需的。
  • 在 WebAssembly (Wasm) 环境中,AOT 是必需的。

JIT 的优势在于,它可以根据基础操作系统和硬件,在给定的环境中将应用(未修改)编译为 CPU 指令和调用约定。 它还可以在更高或更低的质量级别编译代码,以实现更好的启动和稳定状态吞吐量性能。

AOT 的优势是,它提供最佳的应用启动性能,并且在某些情况下,可以使部署更小。 主要缺点是,必须为每个单独的部署目标生成二进制文件(与任何其他本机代码相同)。 AOT 代码与某些反射模式不兼容。

运行时库

.NET 具有一组全面的标准类库。 这些库为许多常规用途类型和特定于工作负载的类型和实用工具功能提供实现。

下面是在 .NET 运行时库中定义的一些类型示例:

有关详细信息,请参阅运行时库概述

NuGet 程序包管理器

NuGet 是适用于 .NET 的包管理器。 它使开发人员能够彼此共享经过编译的二进制文件。 NuGet.org 提供了来自社区的许多常用包

工具

.NET SDK 是一组用于开发和运行 .NET 应用程序的库和工具。 其中包括 MSBuild 生成引擎、Roslyn(C# 和 Visual Basic)编译器以及 F# 编译器。 大多数命令都是使用 dotnet 命令运行的。 CLI 工具可用于本地开发和持续集成。

Visual Studio 系列 IDE 为 .NET 和 C#、F# 和 Visual Basic 语言提供了出色的支持。

GitHub Codespaces 和 GitHub 安全功能支持 .NET。

笔记本

.NET Interactive 是一组 CLI 工具和 API,使用户能够跨 Web、markdown 和笔记本创建交互式体验。

有关详细信息,请参阅以下资源:

CI/CD

MSBuild 和 .NET CLI 可与各种连续集成工具和环境一起使用,例如:

有关详细信息,请参阅在持续集成 (CI) 环境中使用 .NET SDK

部署模型

可以在两种不同模式下发布 .NET 应用:

  • 独立应用包括 .NET 运行时和依赖库。 它们可以是单文件或多文件。 应用程序的用户可以在未安装 .NET 运行时的计算机上运行该应用程序。 独立应用始终面向单个操作系统和体系结构配置。
  • 依赖于框架的应用需要兼容版本的 .NET 运行时,通常会进行全局安装。 可以针对单个操作系统和体系结构配置发布依赖于框架的应用,也可以面向所有受支持的配置作为“可移植”应用发布。

默认情况下,.NET 应用通过本机可执行文件启动。 可执行文件既特定于操作系统,又特定于体系结构。 还可以通过 dotnet 命令启动应用。

可以在容器中部署应用。 Microsoft 为各种目标环境提供了容器映像

.NET 历史信息

在 2002 年,Microsoft 发布了 .NET Framework,这是用于创建 Windows 应用的开发平台。 目前 .NET Framework 的版本为 4.8,并且仍由 Microsoft 支持

2014 年,Microsoft 推出了 .NET Core 作为 .NET Framework 的跨平台开源后续产品。 这种新的 .NET 实现在版本 3.1 中一直保持 .NET Core 的名称。 .NET Core 3.1 之后的下一个版本去掉了名称中的“Core”部分,命名为 .NET 5。

新的 .NET 版本将继续每年发布,每一个主版本号都会更高。 它们包括重要的新功能,并且通常启用新的方案。

.NET 生态系统

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

.NET 实现(历史顺序):

  • .NET Framework - 它提供对 Windows 和 Windows Server 的广泛功能的访问权限。 此外,它还广泛用于基于 Windows 的云计算。 是原始 .NET。
  • Mono - 一个跨平台 .NET Framework 实现。 原始社区和开放源代码 .NET。 用于 Android、iOS 和 Wasm 应用。
  • .NET (Core) - .NET 的一个跨平台开放源代码实现,已针对云时代进行了反思,同时与 .NET Framework 保持极大的兼容。 用于 Linux、macOS 和 Windows 应用。

原文:https://learn.microsoft.com/zh-cn/dotnet/core/introduction#features

  • 21
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值