Как я уже сказал в заголовке, у меня есть большой проект, который построен с использованием MVC и шаблона хранилища сервисов.Как это работает сейчас: в репозитории у нас есть запросы (статические репозитории), а в сервисе у нас есть бизнес-логика.Поскольку мы также хотим начать проводить модульное тестирование, после нескольких обсуждений высшее руководство решило, что нам следует перейти на CQS и DDD (у нас много проектов и нам нужно сохранить ту же структуру), но не уверены, с чего начать.
Проблема в том, что наши сервисы стали достаточно большими с тысячами строк кода и некоторыми методами с сотнями строк.
Типичный метод выглядит примерно так:
public void DoSomething(CreateDTO model)
{
var entity1 = _entity1Repository.Query();
DoSomethingWithEntity1(entity1);
DoACheck();
if (entity1 == null)
{
//do some other stuff as well
var entity2 = _entity2Repository.Query();
DoSomethingWithEntity2(entity2);
}
else
{
//do some other stuff as well
var entity3 = _entity3Repository.Query();
DoSomethingWithEntity3(entity3);
}
//do some other stuff as well
var entity4 = _entity4Repository.Query();
DoSomethingWithEntity4(entity4);
}
Как вы можете видеть, мы вызываем несколько хранилищ в одном методе, и иногда это запрос, иногда это команда.Иногда у нас есть бизнес-логика, которая решает, что будет дальше.Если мы разделим запросы и команды, куда мы поместим логику?Должны ли мы сохранить Сервис для этого?