【问题标题】:Are web applications complex enough to domain-driven design? [closed]Web 应用程序对于域驱动设计是否足够复杂? [关闭]
【发布时间】:2023-03-14 06:42:01
【问题描述】:

经过大量阅读和一些实施 DDD 的尝试,我想我明白人们说这个概念是为复杂领域开发的是什么意思。

我通常为中小型企业开发 Web 应用程序,通常交互只是 CRUD 应用程序和 HTML 中的表格,除此之外还有一些在将数据插入数据库之前的验证。

我在 Martin Fowler 的网站上阅读了有关 CQRS 的信息,其中一句话引起了我的注意:“CQRS 适用于复杂的领域,这种领域也受益于领域驱动设计。”。

所以我的问题是如何分析软件的复杂性?
什么时候申请DDD值钱?
是否值得在软件中应用 DDD 以实现中小型复杂性?

谢谢!

【问题讨论】:

    标签: web domain-driven-design agile methodology


    【解决方案1】:

    通常,即使是表面上最简单的应用程序也会变成复杂的东西。现在我一直在尝试应用 DDD 的一些基础知识(至少是战术模式),如果我发现该项目失控,那么我开始映射上下文等。

    可以通过分析您对业务领域的理解来分析软件的复杂性。

    【讨论】:

    • 您最终必须为每个实体建立一个存储库?所以只是把每个实体都放在聚合器根目录中?那是我的主要问题。我通常需要为数据库中的每个表建立一个存储库,当这些表有关系时我不知道该怎么做,因为在“聚合器根”中注入存储库是一种不好的做法。
    • 我想成为category.getNews() 我做不到,因为我的根聚合器类别不知道如何处理根新闻聚合器。所以我最终不得不这样做:category.setNews(newsRepository.findByCategoryId (category.getId())),如果你有一个类别列表必须使用foreach这个操作。
    • 不幸的是,DDD 在我通常必须开发​​的项目中减慢了我的速度,对我没有帮助:(
    • DDD 之前也拖慢了我的项目,但这只是因为我不了解它,而且我缺乏使用它的经验。现在,当我知道该做什么时,它的速度和早期的项目一样快,如果不是更快的话。我有每个 AR 的存储库,而不是实体。至于类别,如果新闻只能有一个类别,则通过新闻ARCategoryId(category_id)中的ID值对象进行引用。然后在新闻存储库中,您可以创建方法newsRepository.getNewsFromCategory(category) 并返回新闻列表。
    猜你喜欢
    • 2011-04-11
    • 1970-01-01
    • 2012-05-27
    • 2015-06-03
    • 1970-01-01
    • 2012-01-23
    • 2015-01-28
    • 2018-10-05
    • 2010-09-11
    相关资源
    最近更新 更多