您在哪里将验证放在具有域驱动设计的项目中?

Hen*_*ung 3 c# validation domain-driven-design

我应该在哪里将Domain对象的Validation逻辑放在我的解决方案中?我应该把它们放在Domain类,Business层还是其他?

我还想利用Microsoft企业库中的验证应用程序块和策略注入应用程序块来实现此目的.

我应该使用什么验证策略来很好地适应所有这些?

提前谢谢!

Arn*_*psa 5

这取决于.首先 - 您需要了解您正在验证的内容.

您可以验证:

  1. 您从Http帖子中检索的值可以解析为日期时间,
  2. Customer.Name不大于100个符号,
  3. 客户有足够的钱购买东西.

正如您所看到的 - 这些验证在性质上是不同的,因此它们应该分开.它们的重要性也各不相同(参见"所有规则不均等"段落).


你可能想要考虑的是不允许域对象处于无效状态.

这将大大降低复杂性,因为在当前时间范围内,您知道该对象是有效的,您需要仅验证当前任务相关的事物以便推进.

此外,您应该考虑避免在您的域模型中使用工具,因为它应该尽可能地基础设施免费.

另一件事 - 拥抱价值对象的使用.这些非常适合验证封装.