【问题标题】:How to use DDD in practice?如何在实践中使用 DDD?
【发布时间】:2017-02-09 22:29:22
【问题描述】:

我对如何在实际项目中使用 DDD 方法有一些疑问。粗略地说,在我的应用程序中,我有两种类型的操作:简单的 CRUD 操作,非常简单,只需在 DB 中创建或更新记录,不需要很多业务逻辑和一些需要它的操作。 对于这两种类型的操作,我都使用服务来避免某种“不对称”,但对于 CRUD 操作,它看起来像是开销,因为我只是将 save() 方法包装在服务方法中并且它没有添加任何逻辑。

那么根据您的经验,在控制器中进行简单 (CRUD) 操作或将其放入服务中的最佳方法是什么,或者您可能有其他想法?

【问题讨论】:

  • 您是否确定了有界上下文、聚合?你提到 DDD 是什么意思?
  • 对于 CRUD 架构,您应该使事情尽可能简单,不要有很多不必要的层。对于其他更复杂的情况,您可以应用 DDD:识别有界上下文、聚合、实体、值对象。根据复杂性和业务需求(可扩展性、可维护性、用户数量等),您可以选择高级架构(即洋葱架构/端口和适配器)和低级架构(即 CQRS)
  • DDD 是一种处理复杂域的方法。在你的情况下,它听起来不像你需要它。查看 Vaughn Vernon 的记分卡:informit.com/articles/article.aspx?p=1944876&seqNum=2
  • 我有复杂的逻辑,但不是在应用程序的所有部分
  • 对于复杂的逻辑部分,我会检查 Vaughn Vernon 的记分卡。

标签: architecture domain-driven-design


【解决方案1】:

DDD 不适合 CRUD 操作,但是,根据我的经验,许多简单的 CRUD 应用程序往往会发展为比最初想象的复杂得多的东西。小心考虑一些浪费,在你知道之前,你希望你已经使用了 DDD。

您现在可以做的是将 DDD 用于更复杂的部分,并使 CRUD 操作尽可能简单,然后当它变得更复杂时,您至少有一个框架来使用 DDD 方法。

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多