从头开始学习 ASP.NET
如果你读过我上一篇文章,你就会明白我今年想学的所有内容,从 ASP.NET Core 开始。过去一周,我收集了微软的文档、博客、论坛和互联网搜索的资源,为自己制定了一个包含 17 个模块的学习计划。
如果您希望了解 Microsoft 的全栈 Web 框架,那么我希望这些资源也能对您有所帮助。
仅供参考:本学习路径假设您具备 C# 语法的基础知识以及一些常用库的基础知识。如果您不具备这些知识,Codecademy 也提供免费课程!
ASP.NET Core 学习路径
ASP.NET 简介
1. dotnet cli
模块目标:能够解释最常见的命令及其选项并在整个开发过程中使用它们。
资源:
- 微软:.NET CLI 概述
- 教程老师:.NET Core 命令行界面
- Andrew Lock - ASP.NET Core 实战
- 参考文献 - 2
- 2.2 创建您的第一个 ASP.NET Core 应用程序 - p. 32
2. ASP.NET Web 应用程序启动模板
模块目标:能够解释 ASP.NET 应用程序的启动模板生成的每个文件和文件夹的用途和用途。
资源:
- 教程老师:创建 ASP.NET Core MVC 应用程序
- 教程老师:wwwroot 文件夹
- 微软:ASP.NET Core 基础知识概述
- Andrew Lock - ASP.NET Core 实战
- 2.5 csproj 项目文件 - p. 38
- 2.6 Program 类 - p. 41
- 2.7 Startup 类 - p. 44
3.依赖注入
模块目标:描述依赖注入的目的,并能够在 ASP.NET 的依赖注入框架内配置依赖关系。
资源:
- 微软:ASP.NET Core 中的依赖注入
- CodeProject:探索 Microsoft.Extensions.DependencyInjection 机制
- StackOverflow:如何使用 Microsoft.Extensions.DependencyInjection
- Andrew Lock - ASP.NET Core 实战
- 10 具有依赖注入的服务配置 - p. 267
4. 使用 CreateDefaultBuilder 配置应用程序
模块目标:解释 CreateDefaultBuilder 的目的和用途。识别 ASP.NET Core 中常见的配置模式。
资源:
- Andrew Lock - ASP.NET Core 实战
- 11 配置 ASP.NET Core 应用程序 - 303
使用 ASP.NET Core 创建 API
5. 最小 API
模块目标:创建一个 API,响应至少 4 个不同端点的请求。创建一个根据条件返回多个状态码的端点。
资源:
- 微软:最小 API 概述
- 微软:最小 API 快速参考
- C# 角:ASP.NET 中的 Restful API
- Andrew Lock - ASP.NET Core 实战
- 9.1 什么是 Web API 以及何时应该使用它? - 235
- 9.6 从模型生成响应 - 258
6. 使用实体框架将 API 连接到 PostgreSQL
模块目标:使用实体框架将第五个模块的 API 连接到 PostgreSQL 数据库,并创建 API 端点来处理 CRUD 操作。
资源:
- C# Corner:使用 PostreSQL 构建强大的 ASP.NET Core Web API
- ASP.NET 样板:EF Core PostreSQL 集成
- SuncFusion:使用 Dapper 和 PostgreSQL 创建 ASP.NET Core CRUD Web API
- Andrew Lock - ASP.NET Core 实战
- 12.4 从数据库查询数据以及将数据保存到数据库 - 355
6a. 使用 ADO.NET 连接到 PostgreSQL
模块目标:分支上一模块的项目,无需使用 EF 即可访问 PostgreSQL 数据库。直接在 ADO.NET 上执行数据调用。
资源:
- Microsoft:ADO.NET 概述
- [Microsft 问答:带有 SQL 的 ASP.NET Core Web 应用程序(无实体框架)](https://learn.microsoft.com/en-us/answers/questions/1123214/asp-net-core-web-app-with-sql-(no-entity-framework)
- Devart:如何使用 C# 在 .NET 中连接到 PostgreSQL
7.基于控制器的API
模块目标:解释基于控制器的 API 与最小 API 的区别以及成本/收益。将最小 API 重构为基于控制器的 API。
资源:
- 微软:在基于控制器的 API 和最小 API 之间进行选择
- 微软:使用 ASP.NET Core 创建 Web API
- Andrew Lock - ASP.NET Core 实战
- 9.1 创建你的第一个 Web API 控制器 238
- 9.2 将 MVC 设计模式应用于 Web API
- 9.4 属性路由:对 URL 进行细粒度控制 - 246
8. 添加内置和自定义中间件
模块目标:识别最常见的 ASP.NET 中间件,并解释其用途。创建自己的中间件函数并将其挂载到应用程序中。
资源:
- 微软:ASP.NET Core 中间件
- 微软:编写自定义 ASP.NET Core 中间件
- Microsoft:ASP.NET Core 中的请求和响应操作
- Andrew Lock - ASP.NET Core 实战
- 3 使用中间件管道处理请求
模型-视图-控制器设计模式
9. ASP.NET MVC 起始模板和基本路由
模块目标:创建一个 MVC 应用程序,响应多个不同路由的 GET 和 POST 请求。
资源:
- 微软:ASP.NET Core MVC 教程
- 教程老师:MVC 架构
- Andrew Lock - ASP.NET Core 实战
- 2.8 MVC 中间件和 Home 控制器 - 52
- 4.1 MVC 简介 - 95
- 4.2 MVC 控制器和动作方法 113
- 5 使用传统路由将 URL 映射到方法 - 120
10. 使用 Razor 语法将模型绑定到视图
模块目标:从零开始创建一个 Razor 视图。创建一个模型并将其附加到该视图。从零开始在页面模型上启用 CRUD 操作。
资源:
- 微软:ASP.NET Core 的 Razor 语法参考
- 微软:ASP.NET Core 中的布局
- 微软:使用 ASP.NET Core 中的 Razor 类库项目创建可重用的 UI
- Andrew Lock - ASP.NET Core 实战
- 7 使用 Razor 视图渲染 HTML - 175
11. 使用标签助手进行用户输入其他有用的东西
模块目标:识别并解释最常见的 ASP.NET 标签助手。处理不同类型的用户输入。创建你自己的自定义标签助手。
资源:
- 微软:ASP.NET Core 中的标签助手
- 微软:ASP.NET Core 内置标签助手
- Andrew Lock - ASP.NET Core 实战
- 8 使用标签助手构建表单
- 19.4 创建自定义 Razor 标签助手 591
12.使用 DataAnnotations 验证您的模型
模块目标:识别并解释最常见的 ASP.NET DataAnnotations。为你的模型添加验证。
资源:
- ByteHide:C# 中的数据注释:完整指南
- 微软:System.ComponentModel.DataAnnotations 命名空间
- Andrew Lock - ASP.NET Core 实战
- 6.3 使用模型验证处理用户输入
13. 定义视图模型的样式
模块目标:描述在 ASP.NET Core 中设置视图样式的常用方法。实现 CSS 样式并将应用程序连接到 Bootstrap。创建布局并编辑其样式。
资源:
- Syncfusion:ASP.NET Core 简明教程
- 使用 CSS 隔离 - 36
- Bootstrap:开始使用 Bootstrap
- Bootstrapdash:如何使用 ASP.NET 和 Core Bootstrap
- 基础设施:设计你的应用程序
14. ASP.NET Core Identity 以及添加身份验证和授权
模块目标:使用 ASP.NET Core Identity 为您的应用程序添加身份验证功能。描述 ASP.NET Core 常用的授权方法,并选择其中一种在您的 MVC 应用程序中实现。
资源:
- Andrew Lock - ASP.NET Core 实战
- 14.1 认证与授权介绍 - 402
- 14.2 什么是 ASP.NET Core Identity - 412
- 14.4 将 ASP.NET Core Identity 添加到现有项目 - 423
- 14.5 管理用户:向用户添加新声明 - 428
- 15 授权:保护你的应用程序 432
完善并部署您的应用程序
15. 使用 NUnit 为你的操作方法添加单元测试
模块目标:向 ASP.NET 应用程序的控制器添加测试。创建测试以增强应用程序正常运行的可信度。理解 NUnit 的基本语法及其与单元测试形式的关系。
资源:
- 微软:使用 NUnit 和 .NET Core 对 C# 进行单元测试
- C# 角:NUnit 测试框架简介
- testRigor:ASP.NET 测试
- Andrew Lock - ASP.NET Core 实战
- 20.4 MVC 控制器的单元测试
16.使用 IIS Express 发布您的应用程序
模块目标:描述 IIS Express 的使用方法以及“发布”的概念。解释 ASP.NET Core 的托管模型。将你的 MVC 应用程序发布到 IIS Express。
资源:
- 微软:将 ASP.NET Core 应用发布到 IIS
- 微软:原生 AOT 部署
- Andrew Lock - ASP.NET Core 实战
- 16.1 理解 ASP.NET Core 托管模型 - 463
- 16.2 将应用发布到 IIS - 470
16a. 使用 Nginx 将应用程序部署到 Linux
模块目标:预置一个 Ubuntu 的 EC2 实例。配置 Nginx 以在域中为应用程序提供服务,并将 DNS 提供商指向该地址。使用 Github Actions 设置 CI/CD 可获得加分。
资源:
- 微软:使用 Nginx 在 Linux 上托管 ASP.NET Core
- nginx:初学者指南
- nginx:文档
- Andrew Lock - ASP.NET Core 实战
- 16.3 在 Linux 上托管应用程序
17. 配置日志记录以监控您的应用程序
模块目标:使用 Microsoft 提供的日志记录向应用程序添加可搜索且有用的日志记录以监视应用程序。
资源:
- 微软:.NET Core 和 ASP.NET Core 中的日志
- Dev.to:在 ASP.NET 中登录
- Andrew Lock - ASP.NET Core 实战
- 17.1 在生产环境中有效使用日志记录 - 503
- 17.2 向应用程序添加日志消息 - 507
- 17.5 结构化日志:创建可搜索、有用的日志