CQRS模式上的服务层

时间:2016-02-09 14:14:58

标签: c# entity-framework asp.net-mvc-5 cqrs

我正在尝试使用CQRS模式而不是存储库和Onion架构来构建应用程序,而不是使用MVC5堆栈来构建n层。

我现在有以下几层:

Web.Data - Contains DbContext 
Web.Model - POCO classes
Web.Service - Implementation of Commands and Queries using MediatR
   --Commands
   -----Request
   -----Handlers
   --Queries
   -----Request
   -----Handlers
Web.UI

我正在考虑将业务逻辑(例如验证)放在Handler类上,但我认为这些类可以直接访问EF。它仍然是放置这些逻辑的好地方吗?

如果我有电子邮件逻辑或出货逻辑怎么样?在传统层上,他们自然会转到应用程序服务,将存储库注入到该服务中,它们如何适应当前的体系结构?我们不想去存储库路由,因为我们想要整体利用EF而不是更多地抽象它。

我是否应该拥有接受MediatR接口并让控制器改为使用Service接口的传统服务层?

1 个答案:

答案 0 :(得分:1)

处理程序类应该处理命令并包含逻辑以协调任务的完成。此逻辑可以包括对域模型的委派,持久性和检索,以及调用其他服务(例如传送或电子邮件)。注意,命令处理程序只是应用程序服务的另一种风格。因此,它不应该直接访问EF,也不应该进行业务逻辑验证。