У меня есть уровень хранилища, который отвечает за мой доступ к данным, который вызывается уровнем обслуживания. Сервисный уровень возвращает DTO, которые сериализуются и отправляются по проводам. Чаще всего сервисы делают немного больше, чем просто получают доступ к хранилищу и возвращают все, что возвращает хранилище.
Но чтобы это работало, хранилище должно возвращать экземпляр этого DTO. В противном случае сначала нужно отобразить объект уровня данных, который репозиторий возвращает DTO на уровне служб, и вернуть его. Это просто кажется расточительным.
Кроме того, если создание DTO происходит на уровне сервиса, то, что могло быть сделано раньше в одном вызове репозитория и, следовательно, в одном запросе к базе данных, теперь должно произойти с несколькими вызовами репозитория на уровне сервиса, чтобы ' составить окончательный DTO. Если, конечно, я не создаю транспортный объект между уровнем данных и уровнем обслуживания, который может содержать такой составной объект. Который затем должен быть сопоставлен с DTO. Это просто кажется расточительным ради чистоты. Но также неправильно чувствовать, что слой репозитория возвращает объекты, которые просто существуют, для отправки по проводам.