在DDD聚合根,其中应该放置检查现有的聚集的逻辑

问题描述 投票:0回答:1

假设我有一个Order聚合根,当我收到命令创建Order,我要检查一些条件等命令,并创建下降,如果这些条件得到满足。检查这个条件肯定是业务逻辑,但我不应该在第一个地方创造秩序,而条件不具备。那么如何实现这个检查与DDD原则规定?它是域名服务,应用服务的一部分吗?

编辑:有TABLEID财产Order。例如,我需要检查是否表已被使用,如果是,回落整理创作。此表服务可以驻留在另一个AppDomain中,与网络电话可能需要。

我使用的事件采购,CQRS,命令处理程序。对不起,我不能发布代码。

domain-driven-design aggregateroot domainservices
1个回答
1
投票

那么如何实现这个检查与DDD原则规定?

“这取决于”。

如果你并不需要的一切是完全一致的,那么你可以给你汇总的其他数据的高速缓存副本来计算它的逻辑。有不同图案的人使用这个;使用域服务,对你来说是一个,控制权返回给应用程序获得的数据对你来说是另一个获取数据...

----> create order
<---- here is a list of other information I need
----> the other information
<---- here's the order

这件事情采取的业务专家 - 如果其他数据是一秒岁,是足够的计算准确吗?

在另一方面,如果你需要的一切是完全一致的,那么你需要能够锁定的其他信息,这样当你在你的计算工作的人都无法改变这些细节。

该锁可以是悲观(锁定数据,然后做计算),或乐观(获取数据的副本,进行计算,然后对数据进行锁定,并确保它并没有改变)。

这里的“坏”消息:定义在领域驱动设计模式锁定为聚集的机制。聚集体是coarse grained lock图案的表达;当你需要锁定一组数据,这是企业告诉你的数据都应该是相同的集合的一部分。

它有时会发生,你有一个漂亮的域模型,以表达一堆明显的领域概念,当你发现的业务规则不符合这些边界,在所有排队聚集,你必须重新组织数据边界得到规则工作。

它通常开始你的模型设计想象你的聚集是一个过程好主意,并组合到一起那些需要流程,能够锁定对方的数据。

例如,我需要检查是否表已被使用,如果是,回落整理创作。此表服务可以驻留在另一个AppDomain中,与网络电话可能需要。

当权威数据存在其他地方,然后忘掉锁定。想想尽力而为,异常报告,和缓解冲突的条款。

© www.soinside.com 2019 - 2024. All rights reserved.