ASP.NET Core 概述
作者:Daniel Roth、Rick Anderson 和 Shaun Luttin
注意
此版本不是本文的最新版本。 对于当前版本,请参阅此文的 .NET 8 版本。
警告
此版本的 ASP.NET Core 不再受支持。 有关详细信息,请参阅 .NET 和 .NET Core 支持策略。 对于当前版本,请参阅此文的 .NET 8 版本。
ASP.NET Core 是一个跨平台的高性能开源框架,用于生成启用云且连接 Internet 的新式应用。
使用 ASP.NET Core,您可以:
为何选择 ASP.NET Core?
数百万开发人员在使用或使用过 ASP.NET 4.x 创建 Web 应用。 ASP.NET Core 是对 ASP.NET 4.x 的重新设计,其中包括体系结构上的更改,产生了更精简、更模块化的框架。
ASP.NET Core 具有如下优点:
- 生成 Web UI 和 Web API 的统一场景。
- 针对可测试性进行构建。
- Razor Pages 可以使基于页面的编码方式更简单高效。
- Blazor 允许在浏览器中使用 C# 和 JavaScript。 共享全部使用 .NET 编写的服务器端和客户端应用逻辑。
- 能够在 Windows、macOS 和 Linux 上进行开发和运行。
- 开放源代码和以社区为中心。
- 集成新式客户端框架和开发工作流。
- 支持使用 gRPC 托管远程过程调用 (RPC)。
- 基于环境的云就绪配置系统。
- 内置依赖项注入。
- 轻型的高性能模块化 HTTP 请求管道。
- 能够托管于以下各项:
- 并行版本控制。
- 简化新式 Web 开发的工具。
使用 ASP.NET Core MVC 生成 Web API 和 Web UI
ASP.NET Core MVC 提供生成 Web API 和 Web 应用所需的功能:
- Model-View-Controller (MVC) 模式 使 Web API 和 Web 应用可测试。
- Razor Pages 是基于页面的编程模型,它让 Web UI 的生成更加简单高效。
- Razor 标记提供了适用于 Razor Pages 和 MVC 视图的高效语法。
- 标记帮助程序使服务器端代码可以在 Razor 文件中参与创建和呈现 HTML 元素。
- 内置的多数据格式和内容协商支持使 Web API 可访问多种客户端,包括浏览器和移动设备。
- 模型绑定自动将 HTTP 请求中的数据映射到操作方法参数。
- 模型验证自动执行客户端和服务器端验证。
客户端开发
ASP.NET Core 包括用于生成丰富的交互式 Web UI 的 Blazor,且还与其他常用的前端 JavaScript 框架(如 Angular、React、Vue 和 Bootstrap)集成。 有关详细信息,请参阅 ASP.NET Core Blazor 和“客户端开发”下的相关主题。
ASP.NET Core 目标框架
ASP.NET Core 3.x 或更高版本仅面向 .NET。
面向 .NET 有以下几个优势,并且这些优势会随着每次发布增加。 与 .NET Framework 相比,.NET 的部分优势包括:
- 跨平台。 在 Windows、macOS 和 Linux 上运行。
- 性能更强
- 并行版本控制
- 新 API
- 开源
推荐的学习路径
建议通过以下一系列教程来了解如何开发 ASP.NET Core 应用:
按照你要开发或维护的应用类型的教程操作:
应用类型 方案 教程 Web 应用 新的服务器端 Web UI 开发 Razor Pages 入门 Web 应用 维护 MVC 应用 MVC 入门 Web 应用 客户端 Web UI 开发 开始使用 Blazor Web API RESTful HTTP 服务 创建 Web API† 远程过程调用应用 使用协议缓冲区的协定优先服务 开始使用 gRPC 服务 实时应用 服务器和连接的客户端之间的双向通信 开始使用 SignalR 按照介绍如何进行基本数据访问的教程操作。
方案 教程 新的开发 带 Entity Framework Core 的 Razor 页面 维护 MVC 应用 结合使用 MVC 和 Entity Framework Core 阅读适用于所有应用类型的 ASP.NET Core 基础知识的概述。
浏览目录以了解其他感兴趣的主题。
†此外,还提供了一个交互式 Web API 教程。 无需在本地安装开发工具。 代码在浏览器中的 Azure Cloud Shell 中运行,并且 curl 用于测试。
从 .NET Framework 迁移
有关将 ASP.NET 4.x 应用迁移到 ASP.NET Core 的参考指南,请参阅从 ASP.NET 升级到 ASP.NET Core。
ASP.NET Core 是一个跨平台的高性能开源框架,用于生成启用云且连接 Internet 的新式应用。 使用 ASP.NET Core,您可以:
- 生成 Web 应用和服务、物联网 (IoT) 应用和移动后端。
- 在 Windows、macOS 和 Linux 上使用喜爱的开发工具。
- 部署到云或本地。
- 在 .NET Core 或 .NET Framework 上运行。
为何选择 ASP.NET Core?
数百万开发人员在使用或使用过 ASP.NET 4.x 创建 Web 应用。 ASP.NET Core 是对 ASP.NET 4.x 的重新设计,通过体系结构上的更改,产生了更精简、更模块化的框架。
ASP.NET Core 具有如下优点:
- 生成 Web UI 和 Web API 的统一场景。
- 针对可测试性进行构建。
- Razor Pages 可以使基于页面的编码方式更简单高效。
- Blazor 允许在浏览器中使用 C# 和 JavaScript。 共享全部使用 .NET 编写的服务器端和客户端应用逻辑。
- 能够在 Windows、macOS 和 Linux 上进行开发和运行。
- 开放源代码和以社区为中心。
- 集成新式客户端框架和开发工作流。
- 支持使用 gRPC 托管远程过程调用 (RPC)。
- 基于环境的云就绪配置系统。
- 内置依赖项注入。
- 轻型的高性能模块化 HTTP 请求管道。
- 能够托管于以下各项:
- 并行版本控制。
- 简化新式 Web 开发的工具。
使用 ASP.NET Core MVC 生成 Web API 和 Web UI
ASP.NET Core MVC 提供生成 Web API 和 Web 应用所需的功能:
- Model-View-Controller (MVC) 模式 使 Web API 和 Web 应用可测试。
- Razor Pages 是基于页面的编程模型,它让 Web UI 的生成更加简单高效。
- Razor 标记提供了适用于 Razor Pages 和 MVC 视图的高效语法。
- 标记帮助程序使服务器端代码可以在 Razor 文件中参与创建和呈现 HTML 元素。
- 内置的多数据格式和内容协商支持使 Web API 可访问多种客户端,包括浏览器和移动设备。
- 模型绑定自动将 HTTP 请求中的数据映射到操作方法参数。
- 模型验证自动执行客户端和服务器端验证。
客户端开发
ASP.NET Core 与常用客户端框架和库(包括 Blazor、Angular、React、Vue 和 Bootstrap)无缝集成。 有关详细信息,请参阅 ASP.NET Core Blazor 和“客户端开发”下的相关主题。
面向 .NET Framework 的 ASP.NET Core
ASP.NET Core 2.x 可以面向 .NET Core 或 .NET Framework。 面向 .NET Framework 的 ASP.NET Core 应用无法跨平台,它们仅在 Windows 上运行。 通常,ASP.NET Core 2.x 由 .NET Standard 库组成。 使用 .NET Standard 2.0 编写的库在实现 .NET Standard 2.0 的任何 .NET 平台上运行。
ASP.NET Core 2.x 在实现 .NET Standard 2.0 的 .NET Framework 版本上受支持:
- 建议使用最新版本的 .NET Framework。
- .NET Framework 4.6.1 或更高版本。
ASP.NET Core 3.0 或更高版本仅在 .NET Core 上运行。 有关此更改的详细信息,请参阅 A first look at changes coming in ASP.NET Core 3.0(抢先了解 ASP.NET Core 3.0 即将推出的更改)。
面向 .NET Core 有以下几个优势,并且这些优势会随着每次发布增加。 与 .NET Framework 相比,.NET Core 的部分优势包括:
- 跨平台。 在 macOS、Linux 和 Windows 上运行。
- 性能更强
- 并行版本控制
- 新 API
- 开源
为了帮助缩小从 .NET Framework 到 .NET Core 的 API 差距,Windows 兼容包使数千个仅可在 Windows 中运行的 API 可在 .NET Core 中使用。 这些 API 在 .NET Core 1.x 中不可用。
推荐的学习路径
建议通过以下一系列教程和文章来了解如何开发 ASP.NET Core 应用:
按照你要开发或维护的应用类型的教程操作。
应用类型 方案 教程 Web 应用 用于新的开发 Razor Pages 入门 Web 应用 用于维护 MVC 应用 MVC 入门 Web API 创建 Web API† 实时应用 开始使用 SignalR 按照介绍如何进行基本数据访问的教程操作。
方案 教程 用于新的开发 带 Entity Framework Core 的 Razor 页面 用于维护 MVC 应用 结合使用 MVC 和 Entity Framework Core 阅读适用于所有应用类型的 ASP.NET Core 基础知识的概述。
浏览目录以了解其他感兴趣的主题。
此外,还提供了一个 Web API 教程,需要在浏览器中完全遵循,无需在本地安装 IDE。 代码在 Azure Cloud Shell 中运行,并且 curl 用于测试。
从 .NET Framework 迁移
有关将 ASP.NET 应用迁移到 ASP.NET Core 的参考指南,请参阅从 ASP.NET 升级到 ASP.NET Core。
如何下载示例
很多文章和教程中都包含有示例代码链接。
- 下载 ASP.NET 存储库 zip 文件。
- 解压缩
AspNetCore.Docs-main.zip
文件。 - 若要在解压缩的存储库中访问文章的示例应用,请借助文章的示例链接中的 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# 参考)。
重大更改和安全建议
公告存储库上报告了重大更改和安全建议。 可以通过选择“标签”筛选器将公告限制为特定版本。
后续步骤
有关详细信息,请参阅以下资源:
- ASP.NET Core 入门
- 使用 Visual Studio 将 ASP.NET Core 应用发布到 Azure
- ASP.NET Core 基础知识
- 每周 ASP.NET Community Standup 介绍了团队的工作进度和计划。 它以新博客和第三方软件为重点。