huangchangmingxinghui

Results 2 comments of huangchangmingxinghui

你可以把命令处理器当作以前传统方式的应用Service,它是应用服务层,并不包含领域逻辑的,所有的领域逻辑都封装在Domain层,至于命令处理器放在WebApi中还是单独定义成类库,这得看你实际的业务需要,如果存在公共使用的应用服务,则可以定义成类库,供多个应用程序使用,但这种场景应该很少。 领域服务也属于领域概念,属于领域层,和应用服务是完全不同的。领域服务主要用于协调多个实体完成相应的业务逻辑情况,而这部分逻辑因不能放入任何实体,所以可以定义一个领域服务来完成,最典型的场景举例是:转账服务,因为转账涉及两个实体账户,每个实体只负责入账和出账方法,但并不能完成转账方法,所以需要领域服务来协调这两者完成转账功能。 还有在设计聚合根时,采用的尽可能设计小的聚合根,具体以业务用例操作的不变条件为依据。聚合根与聚合根之间的引用也通过引用聚合根Id的方式,而不是直接引用对象。如果在完成某业务用例的确需要其他聚合根,可以通过在应用层加载其他聚合根,再传入参数的方式给对应的方法。

聚合根设计的指导原则是设计得尽可能小,即引用的对象(无论是实体还是值对象)要少,以完成业务要求的不变条件为基准。聚合根里的对象,外部是不能直接引用操作的,更别说随意从数据库加载了,要加载也必须通过聚合根加载,并调用聚合根提供的方法完成业务逻辑,聚合根会调用内部的对象完成处理,以继续保持业务上的不变条件。