Вложенные запросы с MediatR/CQRS

Мне просто интересно, является ли дизайн, который я буду пытаться реализовать, допустимым CQRS.

Я собираюсь иметь обработчик запросов, который сам отправит больше запросов другим подпроцессорам. Его основная задача - объединить результаты нескольких сервисов. Это нормально для отправки запросов из обработчиков? Я уже могу подумать о трехуровневых иерархиях этих уровней в моем приложении.

2 ответа

Нет, MediatR предназначен для одного уровня запросов и обработчиков. Лучшим вариантом может быть создание службы / менеджера некоторого вида, который вызывает несколько изолированных запросов с использованием MediatR и агрегирует результаты. Реализация может быть похожа на то, что вы имеете в виду, за исключением того, что это не сам обработчик запросов, а совокупность нескольких обработчиков запросов.

Это сильно повлияет на устойчивость системы и время вычислений, а также увеличит связь.

Если какой-либо из обработчиков завершится неудачей, то весь обработчик потерпит неудачу. Если запросы отправляются синхронно, то общее время вычислений является суммой времени отдельных запросов.

Один из способов повторного использования суб-обработчиков - это запросить их в фоновом режиме, вне запроса клиента, это возможно. Таким образом, когда приходит запрос клиента, у вас уже есть данные локально, что повышает устойчивость и время вычислений. Вы останетесь только с муфтой, но это может стоить того, если повторное использование тяжелее, чем муфта.

Я не знаю, возможно ли что-либо из этого в MediatR, есть только общие принципы архитектуры системы.

Другие вопросы по тегам