Net core 是 什麼

跳转至主内容

此浏览器不再受支持。

请升级到 Microsoft Edge 以使用最新的功能、安全更新和技术支持。

ASP.NET Core 概述

  • 项目
  • 10/06/2022

本文内容

作者:Daniel Roth、Rick Anderson 和 Shaun Luttin

如何下载示例

很多文章和教程中都包含有示例代码链接。

  1. 下载 ASP.NET 存储库 zip 文件。
  2. 解压缩 AspNetCore.Docs-main.zip 文件。
  3. 若要在解压缩的存储库中访问文章的示例应用,请借助文章的示例链接中的 URL 来导航到示例文件夹。 通常,文章的示例链接显示在文章顶部,链接文本为“查看或下载示例代码”。

示例代码中的预处理器指令

为了演示多个方案,示例应用使用 #define#if-#else/#elif-#endif 预处理器指令选择性地编译和运行示例代码中不同的片段。 对于那些利用此方法的示例,请将 C# 文件顶部的 #define 指令设置为定义与你想要运行的方案相关联的符号。 一些示例要求在多个文件的顶部定义符号才能运行方案。

例如,以下 #define 符号列表指示四个方案可用(每个符号一个方案)。 当前示例配置运行 TemplateCode 方案:

#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode

若要更改示例以运行 ExpandDefault 方案,请定义 ExpandDefault 符号并保留剩余的符号处于被注释掉的状态:

#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode

若要详细了解如何使用 C# 预处理器指令选择性地编译代码段,请参阅 #define(C# 参考)和 #if(C# 参考)。

示例代码中的区域

一些示例应用包含由 #region 和 #endregion C# 指令包围的代码片段。 文档生成系统会将这些区域注入到所呈现的文档主题中。

区域名称通常包含“代码段”一词。下面的示例显示了一个名为 snippet_WebHostDefaults 的区域:

#region snippet_WebHostDefaults
Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    });
#endregion

主题的 Markdown 文件在以下行中引用了前面的 C# 代码片段:

[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_WebHostDefaults)]

可放心忽略(或删除)代码两侧的 #region#endregion 指令。 如果计划运行主题中所述的示例方案,请不要更改这些指令中的代码。 试用其他方案时,可随时更改代码。

有关详细信息,请参阅参与 ASP.NET 文档:代码片段。

重大更改和安全建议

公告存储库上报告了重大更改和安全建议。 可以通过选择“标签”筛选器将公告限制为特定版本。

后续步骤

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

  • ASP.NET Core 入门
  • 使用 Visual Studio 将 ASP.NET Core 应用发布到 Azure
  • ASP.NET Core 基础知识
  • 每周 ASP.NET Community Standup 介绍了团队的工作进度和计划。 它以新博客和第三方软件为重点。

跳转至主内容

此浏览器不再受支持。

请升级到 Microsoft Edge 以使用最新的功能、安全更新和技术支持。

下载 Microsoft Edge 有关 Internet Explorer 和 Microsoft Edge 的详细信息

使用英语阅读

使用英语阅读

什么是 .NET? 简介和概述

  • 项目
  • 10/05/2022

本文内容

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

云应用

  • 云原生应用
  • 控制台应用
  • 云中的无服务器函数
  • Web 应用、Web API 和微服务

跨平台客户端应用

  • 桌面应用
  • 游戏
  • 移动应用

Windows 应用

  • Windows 桌面应用
    • Windows 窗体
    • Windows WPF
    • 通用 Windows 平台 (UWP)
  • Windows 服务

其他应用类型

  • 机器学习
  • 物联网 (IoT)

功能

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

  • 异步代码
  • 属性
  • 反射
  • 代码分析器
  • 委托和 lambda
  • 事件
  • 异常
  • 垃圾回收
  • 泛型类型
  • LINQ(语言集成查询)。
  • 并行编程
  • 类型推理 - C#、F#、Visual Basic。
  • 类型系统
  • 不安全代码

使用 .NET

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

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

项目文件:

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

源代码:

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

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

% dotnet run
Hello, World!

它也可以作为两个单独的步骤生成并运行。 下面的示例是一个名为 app 的应用:

% dotnet build
% ./bin/Debug/net6.0/app 
Hello, World!

二进制分布

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

可从以下位置下载它:

  • Microsoft 下载站点。
  • 容器。
  • Linux 包管理器。

免费且开源

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

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

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

运行时库

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

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

  • 每个 .NET 类型都派生自 System.Object 类型。
  • 基元值类型,如 System.Boolean 和 System.Int32。
  • 集合,例如 System.Collections.Generic.List<T> 和 System.Collections.Generic.Dictionary<TKey,TValue>。
  • 数据类型,例如 System.Data.DataSet 和 System.Data.DataTable。
  • 网络实用程序类型,如 System.Net.Http.HttpClient。
  • 文件和流 I/O 实用程序类型,如 和 System.IO.TextWriter。
  • 序列化实用程序类型,例如 和 System.Xml.Serialization.XmlSerializer。
  • 高性能类型,例如 System.Span<T>、System.Numerics.Vector 和 System.Span<T>。

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

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 和笔记本创建交互式体验。

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

  • .NET 浏览器内教程
  • 在计算机上将 .NET 笔记本与 Jupyter 配合使用
  • .NET Interactive 文档

CI/CD

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

  • GitHub Actions
  • Azure DevOps
  • CAKE for C#
  • FAKE for F#

有关详细信息,请参阅在持续集成 (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 之后的下一个版本被命名为 .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 应用。

后续步骤

  • 选择 .NET 教程
  • 在浏览器中试用 .NET
  • C# 导览
  • F# 导览

本文内容

.NET Core做了什么?

ASP.NET Core 是一个跨平台的高性能开源框架,用于生成启用云且连接Internet 的新式应用。 使用ASP.NET Core,您可以: 生成Web 应用和服务、物联网(IoT) 应用和移动后端。 在Windows、macOS 和Linux 上使用喜爱的开发工具。

.NET有什么用?

. NET 是一个免费的跨平台开源开发人员平台,于生成许多不同类型的应用。 使用. NET,可以使用多种语言、编辑器和库来构建Web、移动、桌面、游戏和IoT 等。

.NET Core SDK是什么?

NET SDK 是一组库和工具,开发人员可用其创建. NET 应用程序和库。 它包含以下用于构建和运行应用程序的组件: .

.NET是C#吗?

C#是一个. NET平台下的一个程序设计语言,仅仅一个语言。 运行在.net CLR上的,用于创建应用程序的高级语言。 程序设计语言为了方便开发人员和计算机沟通的工具。