在 .net core 应用程序的应用程序层中使用 Clean Architecture 和 Mediator 模式时,我应该将复杂的业务逻辑放在哪里

问题描述 投票:0回答:1

我最近转而在 ASP.NET Core 应用程序中使用 CQRS 和 Mediator 模式。我的整个应用程序正在使用干净的架构最佳实践(域、应用程序、基础设施、表示)。

自从我开始使用中介者模式以来,我对我的应用程序层有点困惑。

我的应用程序层中目前有一个名为 Features 的文件夹,其中包含类似以下内容:

  • 特点
    • 产品
      • 命令
        • 创建产品
          • Dto、命令、CommandHandler...
      • 查询
        • 获取所有产品
          • Dto、查询、QueryHandler...

当我们只是做简单的增删改查时,这是很容易理解的。我只是注入我的存储库并在处理程序中使用它们来完成我需要做的事情。

我的问题是: 我应该把产品复杂/可重用的业务逻辑计算放在哪里?我应该在我的应用程序层中创建一个包含 ProductService 的 Services 文件夹吗?我假设此服务中的函数将返回我的实际域实体,而不是我的 Dtos。然后我的处理程序可以根据需要调用这些服务,并在必要时映射到 Dtos。

预调解器 CQRS 这正是我所做的。我的应用程序层中有一个服务文件夹,它将注入存储库并执行需要完成的任何自定义产品工作。然后我的控制器将注入我的服务并映射到 dtos。

asp.net-core .net-core cqrs clean-architecture mediator
1个回答
0
投票

调解者不应该对您组织代码的方式进行太多改变。通常不建议在命令中调用命令。因此,您可以继续在“功能/产品”中创建一个“公共”文件夹,并将您的逻辑放在那里。这又可以采用扩展方法或服务/帮助程序类的形式。有时在命令中重复代码也是可以的,以防重复是偶然的并且无法提取到独立有意义的内容中。

© www.soinside.com 2019 - 2024. All rights reserved.