项目结构#
核心基础设施#
项目名称 |
作用 |
|---|---|
eShop.AppHost |
Aspire 应用宿主,用于协调所有微服务和依赖项(如数据库、Redis)的本地开发环境。 |
eShop.ServiceDefaults |
包含微服务的默认配置(健康检查、OpenTelemetry、Dapr 集成等),供其他服务复用。 |
微服务模块#
项目名称 |
作用 |
|---|---|
BasketAPI |
购物车服务,管理用户购物车数据,通常与 Redis 集成实现高性能缓存。 |
CatalogAPI |
商品目录服务,提供商品查询、分类管理,使用 PostgreSQL 或 SQL Server 存储数据。 |
IdentityAPI |
身份认证服务,基于 ASP.NET Core Identity,处理用户登录、注册、JWT 令牌颁发。 |
OrderingAPI |
订单服务,处理订单创建、状态管理,依赖 OrderingDomain 和 Ordering.Infrastructure。 |
Webhooks.API |
Webhook 服务,允许外部系统订阅事件(如订单状态变更)。 |
Mobile.Bff.Shopping |
面向移动端的 BFF(Backend for Frontend),聚合多个微服务的数据。 |
前端与客户端#
项目名称 |
作用 |
|---|---|
ClientApp |
前端应用(可能是 Blazor WebAssembly 或 React/Vue),提供用户界面。 |
WebApp |
主 Web 应用(如 MVC 或 Razor Pages),可能包含管理后台。 |
WebAppComponents |
共享的 UI 组件库(如 Razor 类库)。 |
HybridApp |
混合移动应用(如 .NET MAUI),跨平台移动端实现。 |
事件总线与消息队列#
项目名称 |
作用 |
|---|---|
EventBus |
抽象事件总线接口,定义发布/订阅模式。 |
EventBusRabbitMQ |
RabbitMQ 的事件总线实现,用于服务间异步通信。 |
IntegrationEventLogEF |
集成事件日志(EF Core 实现),确保事件最终一致性。 |
订单处理相关#
项目名称 |
作用 |
|---|---|
OrderingDomain |
订单领域模型(DDD 设计),包含实体、值对象和领域逻辑。 |
Ordering.Infrastructure |
订单基础设施层(数据库访问、仓储实现)。 |
OrderProcessor |
后台服务,处理订单状态机或长时间运行流程。 |
PaymentProcessor |
支付处理服务,模拟或集成第三方支付网关。 |
其他工具类库#
项目名称 |
作用 |
|---|---|
WebhookClient |
Webhook 客户端示例,演示如何调用 Webhooks.API。 |
测试项目(tests 目录)#
项目名称 |
作用 |
|---|---|
Basket.UnitTests |
购物车服务的单元测试。 |
Catalog.FunctionalTests |
商品目录服务的功能测试(API 测试)。 |
Ordering.UnitTests |
订单领域模型的单元测试。 |
Ordering.FunctionalTests |
订单服务的功能测试。 |
关键架构特点#
模块化设计:每个功能(如购物车、订单)独立为微服务。
事件驱动:通过 EventBus 实现服务解耦。
前后端分离:ClientApp 和 WebApp 分别处理不同终端。
DDD 实践:OrderingDomain 体现领域驱动设计。