Хорошо ли иметь отображение моделей и больше логики в контроллере MVC? - PullRequest
0 голосов
/ 20 сентября 2018

Я занимаюсь .NET решением, и мне нужно это сконструировать.Поэтому моя архитектура выглядит следующим образом.

  1. DLL (уровень логики данных) (где у меня есть все мои репозитории для доступа к данным)
  2. Модели (в схеме)
  3. ViewModels (отдельно как библиотека классов)
  4. Сервисный уровень (где манипулирует данными и отправляет их в контроллер)

Здесь DLL будет отправлять данные путем доступа к БД.Затем сервисный уровень будет использовать эти репозитории (и т. Д. UserRepository) и манипулировать данными, как я хочу, чтобы отправить их на контроллер.В этом случае контроллер вернет ViewModels представлениям.Итак, что я хочу знать, при сопоставлении данных с ViewModels, должен ли мой сервисный слой выполнять сопоставления и возвращать ViewModels в Controller ??ИЛИ Сервисный уровень возвращается в качестве Моделей, и в контроллере мы выполняем отображение и создаем модели представлений?

Что я чувствую, нехорошо иметь так много операций в контроллере.Так что мой сервис должен вернуть ViewModels, чтобы у контроллера было меньше работы.

Я хотел бы услышать лучшие практики и идеи ??

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Взгляните на Куда мне поместить код автоматического обработчика? вопрос.

Рекомендуется использовать Automapper на уровне обслуживания.

Кроме того, настройка сопоставлений является статическим методом.Вызывается только один раз, поэтому это не сильно влияет на производительность: Официальное начало работы .

И, наконец, вот еще несколько пояснений к настройке: SO answer

0 голосов
/ 20 сентября 2018

Я бы сделал отображение в контроллере.Поскольку могут быть некоторые случаи, нам нужно отобразить один и тот же выход службы на разные модели представлений.В противном случае мы должны написать несколько методов обслуживания для каждого типа модели представления.Вы можете упростить отображение, используя AutoMapper .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...