我已经看到MediatR和CQRS的组合主要用于Web项目(特别是在MVC项目中)。我们可以在控制器操作中调用 MediatR 的发送方法而不会出现问题。
var result = await _mediator.Send(command);
在Windows服务应用程序中使用此组合是否合适?我在Windows服务应用程序中找不到任何使用MediatR和CQRS的文章。
答案 0 :(得分:0)
MediatR只是内部消息传递。您可以在任何类型的应用程序中使用它。
答案 1 :(得分:0)
我想我了解OP的来源。
在Web应用程序中使用MediatR时,很容易看到组成应用程序的各个部分。每个控制器动作都有一个请求/处理程序/可选,每个动作彼此清晰地分开。
在Windows服务中,没有单独动作的概念。只有一个入口点,因此知道在哪里使用MediatR可能会造成混淆。
我认为解决此问题的一种好方法是使用与单个入口点相对应的单个请求/处理程序/响应。那将意味着将所有Windows服务逻辑放入处理程序中。
如果这导致处理程序非常长,则将不断进行重构,因为会发现新的抽象和消除代码重复的机会。这将与在MediatR支持的Web应用程序中使用的方法完全相同。