【问题标题】:Domain Service that consumes external system使用外部系统的域服务
【发布时间】:2021-02-11 19:28:37
【问题描述】:

我正在尝试使用 DDD 方法实施员工管理系统。该系统是使用 .Net Core 构建的。我为此系统创建了几个项目(UI、应用程序、域、基础设施)。现在在我的域层中,我有一个 Employee 实体(即 Employee 聚合的 Aggregate 根)。业务要求是,每当创建 Employee 时,我都需要进行信用检查,并根据结果为 Employee 实体更新名为“IsCreditCheckDone”的属性。信用检查服务基本上是一个外部休息服务。我正在考虑在 Domain.Services.Interfaces 文件夹中创建一个名为 ICreditCheckService 的接口。我正在考虑在服务文件夹内的基础设施层中实现 ICreditCheckService。此外,ICreditCheckService 将被注入到 Employee 类中,而 Dependency 将映射到 UI 项目的 Startup 类中。

我的问题是,当它使用外部系统时,它是处理域服务的正确方法吗?还是应该换一种方式?

EMS.域

  • 实体

    • Employee.cs
  • 服务

    • 接口
      • ICreditCheckService.cs(这将被注入到 Employee 实体)

EMS.基础设施

  • 服务
    • CreditCheckService.cs(此服务将对外部 Rest API 进行 http 调用)

【问题讨论】:

    标签: .net-core domain-driven-design clean-architecture


    【解决方案1】:

    总的来说,我认为你的设计很好。

    不过有两点:

    • 从术语上讲,调用外部 api 的服务不被视为域服务(域服务运行涉及多个实体的逻辑)。它更像是一个存储库。
    • 不应将存储库服务注入实体,而应注入应用程序(用例)服务。例如,应用程序服务调用您的信用检查服务,然后创建一个员工实体,将布尔结果传递给其 ctor。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2011-05-28
      • 1970-01-01
      相关资源
      最近更新 更多