Да, Модель может быть практически любой Моделью.С моей точки зрения, первоначальное намерение MVC заключалось в том, что это Доменный объект, и это, безусловно, все еще возможно.
Однако мой опыт показал, что лучшее соответствие достигается, если мы представим специализированную ViewModel./ Презентационная модель как изоляция между моделью предметной области и представлением.
Даже когда ViewModel кажется семантически идентичным объекту предметной области, такая изоляция позволяет нам независимо изменять их и, следовательно, следовать Принцип единой ответственности .
Часто оказывается, что представлению требуется некоторая логика, которая применима к конкретной технологии пользовательского интерфейса, и эта логика плохо вписывается в модель предметной области.Примеры включают
- Логика, которая определяет, следует ли включить или отключить конкретный элемент управления.Доменные модели не должны знать ничего об элементах управления.
- Логика, отображающая состояние в цвет.Цвета зависят от технологии - это разные типы CLR в Windows Forms, WPF и ASP.NET.
- Проверка.Формы ввода обычно позволяют вводить недопустимые данные без исключения.Вместо этого они предоставляют обратную связь пользователю, что данные являются недействительными.Доменные объекты, с другой стороны, должны защищать свои инварианты и, таким образом, генерировать неверный ввод.
Более подробную информацию можно найти здесь