架构:CQS,业务逻辑

时间:2020-04-08 10:39:20

标签: architecture cqrs clean-architecture

我正在考虑将CQS模式应用于我的新项目。我只是想以一种更简单的方式将查询和命令分开(我不需要完全的CQRS方法)。我不想将它们全部放在一个班上。

我有几个问题:

  • 在不使用命令/查询调度程序的情况下应用CQS是否有意义 喜欢MediatR?我的意思是,我不想应用用例/处理程序方法 每个模型。我只想使用常见的命令和查询类,例如 “ MoviesCommandService”,“ MoviesQueryService”。
  • 有时候我们可以拥有与CRUD操作不同的业务逻辑,或者我们需要实现诸如战略模式之类的模式。例如,我需要根据业务策略和一些算法使用一些电影API。假设我已经实现了策略设计模式,以使用不同供应商的电影API。这些策略模式的实现需要在哪里进行?在命令或查询部分?还有我怎么命名呢?当您遵循命令/查询处理程序方法或用例方法,并且无法创建常规业务服务类时,是否有任何限制?

因为我正在考虑创建一个称为IMovieAPIStrategy的接口,并实现其具体内容。然后在任何查询或命令处理程序中使用此接口。那是正确的方法吗?

1 个答案:

答案 0 :(得分:0)

查询/命令处理程序本身始终可以通过带有IoC的构造函数获取自己的依赖关系。因此,如果您要重用某些共享逻辑API,可以将其注入处理程序中。使用此模式的最大功能是可以添加装饰器,因为您可以在适用于所有处理程序的单个类中编写横切关注点代码,而不必重复执行该逻辑数百次。基本上,您只是免费获得它(MediatR可以提供帮助)。

相关问题