.NET 8 微服务:领域驱动设计(DDD)、命令查询职责分离(CQRS)、垂直/简洁架构
.NET 8 Microservices: DDD, CQRS, Vertical/Clean Architecture
在.NET 8 上开发微服务,使用 ASP.NET Web API、Docker、RabbitMQ、MassTransit、gRPC、Yarp Gateway、Redis、SqlServer
你将学到
-
ASP.NET Core 8 微服务 Web API 开发
-
ASP.NET 最小 API 和 .NET 8 及 C# 12 的最新特性
-
使用功能文件夹实现垂直切片架构
-
使用 MediatR 库实现 CQRS
-
使用 MediatR 和 FluentValidation 的 CQRS 验证管道行为
-
用于 PostgreSQL 上.NET 事务性文档数据库的 Marten 库
-
用于 Minimal API 端点定义的 Carter 库
-
使用 Redis 作为 Basketdb 的分布式缓存
-
实现代理、装饰器和缓存分离设计模式
-
使用购物车微服务构建高性能的跨服务 gRPC 通信
-
使用 Discount Grpc 服务进行服务间同步通信以计算产品最终价格
-
使用 MassTransit 和 RabbitMQ 发布 BasketCheckout 队列
-
PostgreSQL 数据库连接和容器化
-
使用最佳实践实现 DDD、CQRS 和 Clean Architecture
-
战术领域驱动设计:实体、值对象、聚合、聚合根
-
使用 MediatR、FluentValidation 和 Mapster 包开发 CQRS
-
使用 Entity Framework Core ORM,并在应用程序启动时自动迁移到 SqlServer
-
Entity Framework Core 代码优先方法,迁移,干净架构中的 DDD 实体配置
-
使用 RabbitMQ 消息代理服务进行异步微服务通信
-
使用 RabbitMQ 发布/订阅主题交换模型
-
使用 MassTransit-RabbitMQ 配置消费 RabbitMQ 购物车结账事件队列
-
使用 MassTransit 对 RabbitMQ 消息代理系统进行抽象
-
使用 Yarp 反向代理实现网关路由模式 API 网关
-
Yarp 反向代理配置:路由、集群、路径、转换、目的地
-
在 Yarp 反向代理配置中使用 FixedWindowLimiter 进行速率限制
-
ASP.NET Core Web 应用程序,使用 Bootstrap 4 和 Razor 模板
-
使用 Refit 库和生成的 HttpClientFactory 消费 YarpApiGateway API
-
跨领域关注点:日志记录、全局异常处理和健康检查
-
用于运行多容器 Docker 环境的 Dockerfile 和 docker-compose 文件
要求
-
C# 知识(泛型、异步/等待、匿名方法、Action、谓词)
-
ASP.NET 基础知识
-
Docker 基础知识
课程介绍
本课程源自一个 GitHub 上的 aspnetrun 微服务仓库 ,该仓库已获得社区验证,拥有 3000+ 星标 和 1600+ 分支。
您将学习如何在 .Net 平台上构建微服务 ,这些平台使用 Asp.Net Web API, Docker, RabbitMQ, MassTransit, Grpc, Yarp API Gateway, PostgreSQL, Redis, SQLite, SqlServer, Marten, Entity Framework Core, CQRS, MediatR, DDD, Vertical 和 Clean Architecture 的实现,并使用 .Net 8 在云原生环境中的最新代码和最佳实践。
您将基于产品、购物车、折扣和订单处理微服务,使用 NoSQL(PostgreSQL DocumentDB、Redis) 和关系型数据库(SQLite、Sql Server) 开发电子商务模块,通过 RabbitMQ 事件驱动通信进行通信,并使用 Yarp API 网关 。您可以找到微服务架构和.NET 逐步实现 ,该课程通过详细的解释和细节逐步开发此课程。
此外,你将开发以下微服务和项目:
包含微服务的目录,其中包括;
- ASP.NET Core 最小 API 和 .NET 8 及 C# 12 的最新特性
- 使用 Feature 文件夹实现垂直切片架构
- 使用 MediatR 库实现 CQRS
- 使用 MediatR 和 FluentValidation 实现 CQRS 验证管道行为
- Marten 库用于在 PostgreSQL 上实现 .NET 事务性文档数据库
- Carter 库用于最小化 API 端点定义
- 跨领域关注点日志记录 、全局异常处理和健康检查
- 用于在 Docker 环境中运行多容器的 Dockerfile 和 docker-compose 文件
包含以下内容的购物车微服务:
- ASP.NET 8 Web API 应用程序,遵循 REST API 原则,进行 CRUD 操作
- Redis 作为购物车数据库的分布式缓存
- 实现代理 、 装饰器和缓存分离设计模式
- 消费折扣 gRPC 服务以进行服务间同步通信,计算产品最终价格
- 发布购物车结账队列,使用 MassTransit 和 RabbitMQ
包含折扣微服务的有;
- ASP.NET gRPC 服务器应用程序
- 构建高性能的服务间 gRPC 通信 ——购物车微服务
- 通过创建 Protobuf 消息来暴露 gRPC 服务
- Entity Framework Core ORM – SQLite 数据提供者和迁移
- SQLite 数据库 连接和容器化
微服务通信
- 同步服务间 gRPC 通信
- 使用 RabbitMQ 消息代理服务的异步微服务通信
- 使用 RabbitMQ 发布/订阅主题交换模型
- 使用 MassTransit 对 RabbitMQ 消息代理系统进行抽象
- 从 Basket 微服务发布 BasketCheckout 事件队列,并从 Ordering 微服务订阅此事件
- 创建 RabbitMQ EventBus.Messages 库 并添加对微服务的引用
Ordering 微服务
- 使用最佳实践实现 DDD、CQRS 和 Clean Architecture
- 使用 MediatR、FluentValidation 和 Mapster 包开发 CQRS
- 使用 领域事件 & 集成事件
- Entity Framework Core Code-First 方法 , Migrations, DDD 实体配置
- 使用 RabbitMQ BasketCheckout 事件队列,通过 MassTransit-RabbitMQ 配置
- SqlServer 数据库 连接和容器化
- 使用 Entity Framework Core ORM,在应用程序启动时自动迁移到 SqlServer
Yarp API 网关微服务
- 使用 Yarp 反向代理实现网关路由模式的 API 网关
- Yarp 反向代理配置 ;路由、集群、路径、转换、目的地
- 在 Yarp 反向代理配置上使用 FixedWindowLimiter 实现速率限制
- 示例微服务/容器,通过 API 网关进行重定向
WebUI 购物应用微服务
- 基于 Bootstrap 4 和 Razor 模板的 ASP.NET Core Web 应用
- 使用 Refit Library 和 Generated HttpClientFactory 消费 YarpApiGateway API
- ASP.NET Core Razor 工具 — 视图组件、部分视图、标签辅助工具、模型绑定和验证、Razor 区域等
使用 Docker Compose 建立所有微服务在 Docker 上;
- 微服务的容器化
- 微服务和支撑服务(数据库、分布式缓存、消息代理等)的编排
- 覆盖环境变量
在所有这些之上,你还将学习如何编写优质代码,而不仅仅是如何构建微服务。在这门课程中,你将看到一个采用 DDD 最佳实践的分层应用程序架构的演示。实现 NLayer 六边形架构(核心层、应用层、基础设施层和表示层),以及领域驱动设计(实体、仓库、领域/应用服务、DTO 等),旨在成为一个干净架构,并应用 SOLID 原则,以便用作项目模板。还实现了诸如松耦合、依赖倒置架构等最佳实践,以及使用依赖注入、日志记录、验证、异常处理等设计模式。
这门课程适合你吗?
这门课程非常实用,大约 95% 以上的课程将涉及你和我一起在这个项目上进行编码。如果你是那种通过实践学习效果最好的人,那么这门课程绝对适合你。
这门课程所需的工具
在这个课程中,所有课程都使用 Visual Studio 作为代码编辑器进行演示。当然,你可以使用任何你喜欢的代码编辑器和任何操作系统,只要它是 Windows 或 Mac。此外,使用 Docker Desktop 来使用不同的数据库提供者。
这门课程适合谁:
- 对 API 和微服务感兴趣的 ASP.NET Core 开发初学者
- 对学习如何在.NET 上构建微服务的 C#开发者感兴趣
- 希望在.NET 上参与微服务的资深开发者


评论(0)