# EShop **Repository Path**: erick1999/eshop ## Basic Information - **Project Name**: EShop - **Description**: 后端基于DDD的学习Demo - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-17 - **Last Updated**: 2026-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EShop DDD 学习项目 一个用 **ASP.NET Core Web API + C# (.NET 9)** 从零搭建的 **领域驱动设计(DDD)** 学习项目, 业务场景为简化的**电商订单系统**(下单、库存、支付、取消)。 体现了当前后端主流的 DDD 工程实践: - ✅ 经典四层架构(领域 / 应用 / 基础设施 / 表现),依赖单向指向内层 - ✅ CQRS(命令查询职责分离)+ MediatR - ✅ MediatR 管道行为(日志 / 校验 / 工作单元) - ✅ 领域事件驱动(下单扣库存、取消回补库存、支付通知) - ✅ 仓储 + 工作单元(Repository + Unit of Work) - ✅ 规约模式(Specification) - ✅ FluentValidation 输入校验 - ✅ Result 模式统一成败与错误处理 - ✅ 值对象 / 聚合根 / 实体 / 枚举类等完整 DDD 构建块 - ✅ EF Core InMemory 模拟数据,**无需安装任何数据库** ## 快速开始 ```powershell # 运行 API(启动后浏览器打开控制台提示的地址即可看到 Swagger UI) dotnet run --project src/EShop.WebApi # 运行单元测试 dotnet test ``` 启动后访问根路径即可打开 **Swagger UI**,直接体验完整流程: **查询商品 → 下单 → 查询订单 → 支付 → 取消**。 内置 3 个模拟商品(固定 Id 方便测试): | 商品 | Id | |------|----| | iPhone 16 Pro | `11111111-1111-1111-1111-111111111111` | | MacBook Pro 14 | `22222222-2222-2222-2222-222222222222` | | AirPods Pro 2 | `33333333-3333-3333-3333-333333333333` | ## 学习教程 完整的分章节教程在 [`docs/`](docs) 目录,**强烈建议从这里开始**: 1. [00 · 项目总览与运行指南](docs/00-项目总览与运行指南.md) 2. [01 · DDD 核心概念与分层架构](docs/01-DDD核心概念与分层架构.md) 3. [02 · 领域层](docs/02-领域层.md) 4. [03 · 应用层](docs/03-应用层.md) 5. [04 · 基础设施层](docs/04-基础设施层.md) 6. [05 · 表现层](docs/05-表现层.md) 7. [06 · 完整请求流程串讲](docs/06-完整请求流程串讲.md) 8. [07 · 动手扩展练习](docs/07-动手扩展练习.md) ## 项目结构 ``` EShop.Ddd.sln ├── src/ │ ├── EShop.Domain 领域层(核心,零框架依赖) │ ├── EShop.Application 应用层(命令/查询/事件处理器/管道行为) │ ├── EShop.Infrastructure 基础设施层(EF Core、仓储、事件派发) │ └── EShop.WebApi 表现层(Controller、中间件、Swagger) ├── tests/ │ └── EShop.UnitTests 领域单元测试 └── docs/ 分章节教程 ``` 依赖方向:`WebApi → Infrastructure → Application → Domain`(Domain 不依赖任何层)。