MVC - возвращает ViewModel из Service [duplicate]

возьмите curl_multi - это намного лучше. Сохраните рукопожатия - они не нужны каждый раз!

8
задан 21 May 2013 в 18:58
поделиться

3 ответа

Хороший вопрос!

После нескольких (жестких) дебатов с моими товарищами по команде + мой опыт работы с приложениями MVC я бы не рекомендовал передавать viewmodel на ваш уровень сервиса / домена.

  1. ViewModel принадлежит к презентации, независимо от того, что.
  2. Поскольку viewModel может быть комбинацией разных моделей (например: 1 viewModel, построенный из 10 моделей), ваш уровень обслуживания должен работать только с вашими объектами домена.

В противном случае ваш сервисный уровень окажется непригодным для использования, потому что ограничено вашими viewModels, которые являются специфическими для одного вида.

Хорошие инструменты, такие как https: / /github.com/AutoMapper/AutoMapper, чтобы выполнить задание сопоставления.

10
ответ дан christophe.chapron 16 August 2018 в 03:03
поделиться

Да. Я уверен, что все в порядке.

Попробуйте использовать MS Entity Framework , и это поможет вам выделить.

-3
ответ дан Academy of Programmer 16 August 2018 в 03:03
поделиться

Я бы не сделал это. Мое правило: методы предоставления услуг со всем, что им нужно для выполнения своей работы, и ничего больше .

Почему?

  1. Потому что он уменьшает сцепление. Чаще всего методы обслуживания адресованы из нескольких источников (потребителей). Пользователю намного проще выполнить простую сигнатуру метода, чем создавать относительно сложный объект, такой как модель представления, иначе он не имеет никакого отношения. Это может даже потребоваться ссылка на сборку, в которой она не понадобится.
  2. Это значительно снижает затраты на техническое обслуживание. Я думаю, что средний разработчик тратит более 50% своего времени на проверку и отслеживание существующего кода (возможно, даже гораздо больше). Теперь всем известно, что поиск чего-то, что не , занимает непропорционально много времени: вы наверняка были везде . Если метод получает аргументы (или объекты со свойствами), которые не используются напрямую или дальше в стеке вызовов, вы или другие люди будете ходить по этому длинному пути и снова.

Итак, если есть что-либо в модели представления, которая не играет роли в методе службы, не используйте ее для вызова метода.

7
ответ дан Gert Arnold 16 August 2018 в 03:03
поделиться
  • 1
    Я всегда склонялся к этому (т. Е. Использовал свои собственные модели вместо VM), но как насчет ситуации, когда ViewModel будет иметь те же свойства, что и Модель? Разве это не считалось бы дублированием? – Matt R 26 March 2017 в 01:00
Другие вопросы по тегам:

Похожие вопросы: