DDD-CQRS能解什么问题

本文探讨了在DDD实践中遇到的问题,如聚合根过度膨胀,以及如何通过CQRS来解决这些问题。CQRS强调读写分离,避免在查询中进行业务操作,以减少数据不一致和资源竞争。文章介绍了CQRS的架构,包括命令总线、事件源和事件处理,并对比了CQRS与传统DDD的区别。建议通过设计小聚合、避免过度组合和使用DTO来优化领域模型。
摘要由CSDN通过智能技术生成

背景

在DDD代码实践过程出现一些看起来很别扭的实现

  • 为了查询,领域聚合根无限扩大

    如商品详情页聚合根

public class BrandAggr {
    /**
     * 唯一标识
     */
     private Long id;
     
    /**
     * 商品简介
     */
    private ItemInfoVal brandInfoVal;

    /**
     * 商品的渠道列表
     */
    private List<ItemChannelVal> channels;

    /**
     * 商品的价格区间列表
     */
    private List<ItemPricingVal> pricings;

    /**
     * 商品风格列表
     */
    private List<ItemStyleVal> styles;
     /**
     * 商品促销列表
     */
    private List<ItemPromotionVal> promotion;
     /**
     * 推荐列表
     */
    private List<ItemRecommendVal> promotion;
  1. 组合领域对象是领域吗?如商品详情页,包含商品,促销,推荐,这这种场景下如何使用聚合根

一. 定义

CQRS(Command and Query Responsibility Segregation)是一种与传统的DDD实现不同的模式,将写与读区分开。CQRS适用于DDD的原因在于查询本身不应当影响领域建模

CQRS 主要包含两大概念,一个是读

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

方丈的寺院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值