Это в основном задает тот же вопрос, что и в How to handle views in a multilayer-application. Однако этот пост не получил большой обратной связи.Как наилучшим образом представлять представления базы данных/итоговую информацию в приложении «3-ярусное»
Вот проблема: мы построили 3-уровневой веб-приложение со следующими уровнями:
-DATA доступа (с использованием репозиториев)
-Service
-ui (MVC 3)
DTO передаются между уровнем пользовательского интерфейса (Controller) и уровнем обслуживания. Более мощные модели доменов, содержащие много логики уровня домена, передаются между службами и слоями доступа к данным. Все отключено с помощью IOC, и приложение следует принципам SOLID (или пытается тоже) - большой счастливой развязанной семьи!
В настоящее время преобразование DTO-> Domain Model и Domain Model-> DTO происходит на сервисном уровне.
Итак, наконец, на мой вопрос:
Мы будем должен начать отображать более сложное только для чтения подмножества информации (то есть сводные взгляды, соединяющие несколько объектов делать накопительные итоги, и т.д.). Итак, какова наилучшая практика для представления данных типа только для чтения в n-уровневой системе? При этом для отображения типов модели домена только для чтения для типов DTO в этом случае не имеет смысла. В большинстве случаев не было бы различия между этими двумя типами. Моя мысль заключалась бы в том, чтобы «разбить» границы слоев для этих типов только для чтения, имея уровень доступа к данным, который обслуживает DTO напрямую и передает их на уровень обслуживания и в пользовательский интерфейс.
Может ли кто-нибудь указать мне правильное направление?
Большое спасибо!
Очень приятно - спасибо за ссылку на CQRS, это похоже на тот подход, который мне нужен! Наличие репозитория для создания представлений readonly имеет смысл. Могут быть некоторые нарушения SRP, поскольку репозиторий/db может обрабатывать то, что можно считать бизнес-логикой, когда речь заходит о составлении форм данных (группировка и т. Д.). Тем не менее, в большинстве случаев производительность и ремонтопригодность могут компенсировать так называемое нарушение, как вы упомянули. Я бы проголосовал за вас, но сайт freakin не позволит мне это сделать :) – drogon
Я бы не использовал те же репозитории, что и запрос на чтение данных, так как репозиторий должен обладать объектами домена сервера.Из-за этого вы не столкнетесь с проблемами, и полиция СРП не будет арестовывать вас, поскольку у вас может быть другая модель для чтения через другой уровень чтения (репозиторий или какой-то запрос –