Here is how we organized the project: Figure 17.4: Solution Explorer view of the file organization In this project, we support request validation using FluentValidation, a third-party NuGet…
The following points are downsides that we can tame as upsides: A way to start refactoring that business logic would be to push the logic into the domain…
On the upside, we have the following: From my experience, features tend to start small and grow over time. The users often find out what they need while…
Instead of separating an application horizontally (layers), a vertical slice groups all horizontal concerns together to encapsulate a feature. Here is a diagram that illustrates that: Figure 17.1:…
Before you begin: Join our book community on Discord Give your feedback straight to the author himself and chat to other early readers on our Discord server (find…
With MediatR, we packed the power of a CQS-inspired pipeline with the Mediator pattern into a Clean Architecture application. We broke the coupling between the request delegates and…
As you may have noticed in the code, I chose the same pattern to build the commands as I did with the CQS sample, so we have a…
In this section, we are exploring MediatR, an open-source mediator implementation.What is MediatR? Let’s start with its maker’s description from its GitHub repository, which brands it as this:…
If you need markers to inject some specific dependency in a particular class, you are most likely cheating the Inversion of Control principle. Instead, you should find a…
The CQS and CQRS patterns suggest dividing the operations of a program into commands and queries. A command mutates data, and a query fetches data. We can apply…