【发布时间】:2016-03-11 07:39:02
【问题描述】:
我正在阅读“为企业构建应用程序 (Dino Esposito)”一书。它提出了一个关于验证的问题。
领域模型可以有一个属性 CanBeSaved,它调用领域模型的 Validate() 方法。一切都很好,除了复杂的情况。 例如,需要唯一客户代码(例如 000542)的客户模型。您只能通过数据库访问来检查这一点。将验证始终放在域服务中不是更好吗?所以你只有一种方法可以检查聚合是否处于有效状态?如果您同时使用两者,开发人员可能会“忘记”为客户使用域服务验证。
【问题讨论】:
-
当您提到域服务时,您实际上是指应用程序服务。域服务与数据库或外部基础设施无关。如果您想将外部验证逻辑放入应用程序服务中,这可能是一种实用的方法。我不完全理解您关于“忘记使用验证”的开发人员的说法。如果您的应用程序服务是创建聚合的唯一方法,那么任何人怎么能“忘记”这样做呢?
标签: validation domain-driven-design