netcorepal / netcorepal-cloud-framework

基于 ASP.NET Core 的领域驱动设计微服务架构实现方案
https://netcorepal.github.io/netcorepal-cloud-framework/
MIT License
124 stars 36 forks source link

负责响应 命令 的Handler的职责? #10

Closed yc-2503 closed 7 months ago

yc-2503 commented 8 months ago

Command 的 Handler 中要处理业务逻辑么? 如果要处理,那又将领域的充血模型与Handler类增加了额外的关联,增加了复杂度。 如果不处理业务逻辑,那Handler将只是薄薄的一层,因为领域间由领域事件负责处理,服务之间由集成事件负责处理,因此也没有太多需要 Handler 协调的事情。

witskeeper commented 8 months ago

CommandHandler负责操作领域模型,也就是说,它负责从仓储中拿出领域模型实例,操作模型实例,然后保存模型实例。

基于这个逻辑,任何不属于领域模型的所负责的逻辑,都将由CommandHandler来负责。

DomainEventHandler,则类似于Controller,负责发起命令,DomainEventHandler不应该操作模型,所有对模型的操作,都应由CommandHandler来做。

总结一下:

  1. CommandHandler负责操作领域模型
  2. DomainEventHandler负责发起命令