【问题标题】:File Import Validation in domain driven design领域驱动设计中的文件导入验证
【发布时间】:2020-02-14 02:12:51
【问题描述】:

我正在开发一个应用程序并尝试使用 DDD 方法。我对域中的所有实体和聚合进行了建模。现在我想将我的验证逻辑保留在域中,但我需要支持一些批量导入功能(通过 csv 文件)。我需要验证文件并向用户提供有关需要更正的行的信息。

执行此操作的最佳 DDD 方法是什么?验证逻辑非常复杂,我不想在域中复制 csv 文件验证。此外,文件结构是一种更扁平的结构,与域聚合不同。因此,即使我验证了聚合,行信息也会丢失。

【问题讨论】:

  • 我不太清楚这个问题。如果您对一个原始数据进行了验证,那么是什么阻止您将逻辑应用于列表?

标签: validation domain-driven-design


【解决方案1】:

执行此操作的最佳 DDD 方法是什么?验证逻辑相当复杂,我不想在域中复制 csv 文件验证。

要完成这种性质的事情,您可以使用 Saga 或流程管理器。它将保持您在文件中的位置并向您的聚合发出命令以执行文件导入。如果命令失败或被拒绝,那么您可以使用域生成的错误消息更新相应的行。

此外,文件结构是一种更扁平的结构,与域聚合不同。因此,即使我验证了聚合,行信息也会丢失。

如有必要,您可以对文件中的记录进行分组,但 saga 应保留行号和相应命令的记录。您可以选择将文件本身建模为聚合,这也将带来好处。消除诸如此类的领域概念将使将来的事情变得更加困难,但是将它们添加到设计中将以时间为代价。

如果您能解释一下,我可以提供更多详细信息:您使用的是 DDD、CQRS、ES、队列、异步等吗?正如@Dnomyar 解释的那样,您也可以帮助解释您在哪里面临实际困难。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-05
    • 2017-11-13
    • 1970-01-01
    • 2011-10-06
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多