Я делаю .NET-решение, и мне нужно его спроектировать. Итак, моя архитектура выглядит так, как показано ниже.

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

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

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

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

1
Anushka Madushan 20 Сен 2018 в 13:33

2 ответа

Лучший ответ

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

2
Sampath 20 Сен 2018 в 11:07

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

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

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

И в заключение, вот еще несколько объяснений по настройке: SO answer

0
Matt 20 Сен 2018 в 11:58