




资源介绍
视频数量:59个
总时长:2小时54分
课程介绍:
ASP.NET Core 10整洁架构实战
一个票务系统,功能看似只是查询场次、创建订单、发送邮件,真正做起来却很快会遇到一团乱麻:控制器里塞满业务逻辑,实体直接依赖数据库,接口变动牵动整条调用链。项目还能运行,但需求越来越多时,维护成本会迅速失控。ASP.NET Core 10整洁架构实战课程以GloboTicket全球票务项目为线索,从业务需求出发,把一个完整应用拆成职责清晰、依赖合理的解决方案,让你看到架构原则如何真正落到代码里。
一、从完整项目理解整洁架构:
课程先展示最终应用,再说明领域层、应用层、基础设施层和API层各自负责什么。你会了解为什么业务规则不应挤在控制器或数据库访问代码中,以及依赖方向为什么应当指向应用核心。
这一部分还会梳理开始开发前需要掌握的技能,包括ASP.NET Core、依赖注入、异步编程、Entity Framework Core、C#和Visual Studio等。内容不会只停留在概念层面,而是以GloboTicket为具体案例,说明项目规模增长后,哪些代码应该放在核心层,哪些实现应该留在外围。
二、掌握支撑架构的基础原则:
接下来,课程回顾软件设计中的关键原则,包括关注点分离、单一职责、依赖倒置、抽象与封装,并将它们和实际开发中的取舍联系起来。
你还会比较分层架构、整洁架构等常见应用架构形式,观察它们在耦合度、测试能力和业务逻辑独立性上的差别。理解这些差异后,再回到整洁架构,就能明白它并非一套固定的项目模板,而是一种让变化被控制在合理范围内的组织方式。
三、搭建应用核心:
进入编码环节后,课程先分析全球票务场景的业务需求,再创建Visual Studio解决方案与分层项目。领域项目承载实体、值对象和核心业务规则,应用项目则通过契约组织应用流程,各层之间的职责从一开始就得到明确。
MediatR用于连接命令、查询与对应处理程序,AutoMapper处理对象映射,CQRS把写操作和读操作拆分到更清楚的工作流中。课程还会介绍Feature组织方式,把同一功能相关的命令、查询、处理程序和验证规则放在一起,避免项目逐渐变成杂乱的文件堆。
随后,你将练习使用Command创建实体,并通过Fluent Validation检查请求数据。配套的自定义异常处理让错误信息更加明确,也让业务层能够专注于拒绝无效操作,而不是依赖控制器或数据库层处理异常。
四、实现基础设施与外部服务:
核心流程建立后,基础设施项目开始接手技术细节。Entity Framework Core负责数据持久化,DbContext、实体配置和仓储相关代码在这里完成,从而避免应用层直接依赖具体数据库。
课程还会加入邮件发送等外部服务支持,并展示如何通过接口和依赖注入,让应用层只声明“需要什么能力”,具体实现则留在基础设施层。完成这部分后,业务逻辑无需因更换数据库、邮件方案或外部接口而被迫重写。
五、构建清晰的API接口:
API项目使用ASP.NET Core创建,控制器通过MediatR发送请求,不再直接承担复杂业务处理。课程会说明控制器应返回什么对象,分析领域实体、响应结果与视图模型之间的区别,并使用OpenAPI描述和公开接口功能。
这种设计不仅让接口结构更加直观,也方便前端或其他客户端理解可用能力。后续接入Blazor时,接口契约会成为前后端协作的重要依据。
六、用测试守住架构边界:
课程区分单元测试、集成测试和API测试,并为应用代码编写单元测试,为基础设施和API控制器编写集成测试。
测试重点不只是确认某个方法返回了正确结果,还要检查业务规则是否在正确位置被执行,以及各层是否能够通过公开契约协作。测试过程中暴露出的依赖问题,也会反过来帮助学员修正架构设计。
七、连接Blazor客户端:
后端API完成后,课程介绍Blazor客户端,并使用NSwag与NSwagStudio生成客户端代码。通过这一过程,API定义可以转化为类型明确、可直接调用的客户端接口。
你将浏览Blazor应用,观察页面如何调用票务服务、展示数据并处理交互,理解从领域规则、API到客户端界面的完整数据流。
八、处理错误并改善运行行为:
最后,课程为API加入统一错误处理,避免异常细节直接暴露给调用方;再将日志加入架构,让关键操作和异常情况能够被追踪。
完成整套内容后,你会得到一个基于ASP.NET Core 10搭建的GloboTicket示例应用,以及一套可复用的架构方法:既能分离领域、应用、基础设施和API职责,也能用CQRS、依赖注入、验证、测试和日志维持代码质量。这门课程适合准备承担后端架构职责的C#开发者、正在维护复杂ASP.NET Core项目的工程师,以及已经会写接口,却希望改善代码组织与可测试性的学习者。