领域驱动设计中依赖注入的最佳位置

Posted

技术标签:

【中文标题】领域驱动设计中依赖注入的最佳位置【英文标题】:Best place for Dependency Injection In Domain Driven Design 【发布时间】:2018-06-19 06:46:12 【问题描述】:

在 DDD 的上下文中,我理解应用程序服务编排域服务和存储库(应用程序工作流),现在我的问题是哪个层负责注入依赖项,依赖项注入必须在 UI 中完成(使用应用程序的层服务)或在应用程序服务中。例如,在具体的存储库注入的情况下,应该由哪一层来做呢?

另一个问题是,我可以将应用服务代码直接放在 Web 服务中,并将该 Web 服务用作应用服务层吗?

最好的问候

【问题讨论】:

【参考方案1】:

... 是依赖注入必须在 UI(使用应用程序服务的层)或 Application Service 中完成。例如,在具体的存储库注入的情况下,应该由哪一层来做呢?

依赖注入容器应该尽可能高的使用。一般来说,这意味着在应用程序的引导程序中,甚至在 UI 之前。

例如,在具体的存储库注入的情况下,应该由哪一层来做呢?

第一次调用的层,整个应用程序的入口点,在Composition root中。

另一个问题是,我可以将应用服务代码直接放在 Web 服务中,并将该 Web 服务用作应用服务层吗?

这在很大程度上取决于您的架构以及对您而言什么是“Web 服务”。如果您指的是分层架构:如果它类似于 REST 控制器,则否,在这种情况下,“Web 服务”在表示层中,而应用程序服务在应用程序层中。应用层包含所有用例,每个应用服务都是一个用例。阅读更多here。

【讨论】:

以上是关于领域驱动设计中依赖注入的最佳位置的主要内容,如果未能解决你的问题,请参考以下文章

领域驱动设计最佳实践

聚焦领域驱动设计的最佳实践

领域驱动设计中的架构要素

基于ABP落地领域驱动设计-06.正确区分领域逻辑和应用逻辑

领域驱动设计:软件核心复杂性应对之道pdf

基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则