ASP.Net MVC и MVVM - PullRequest
       5

ASP.Net MVC и MVVM

7 голосов
/ 18 сентября 2010

MVVM - это шаблон проектирования Microsoft, существовавший до ASP.Net MVC.Может кто-нибудь через свет на различия между MVVM и новой моделью MVC?

Ответы [ 4 ]

13 голосов
/ 18 сентября 2010

Может кто-нибудь пролить свет на различия между MVVM и новым шаблоном MVC?

Да: при использовании ASP.NET MVC шаблон MVC использует контроллер для визуализации модели непосредственно в виде.Это вполне приемлемо для тривиальных проектов с небольшим количеством объектов.Проблема может возникнуть из-за того, что проблемы уровня пользовательского интерфейса могут перетекать в базовую (доменную) модель.

При использовании MVVM вы добавляете абстракцию между моделью и представлением, котораяКонечно, ViewModel.Это позволяет автору проецировать в представление объект, который наиболее легко используется представлением.ViewModel может содержать вещи, которые будут неуместны в (доменной) модели.Стоимость, связанная с этим, заключается в том, что вам нужна логика сопоставления, которая переносит данные из модели в модель представления.Такие инструменты, как AutoMapper, могут помочь в этой рутинной работе.

Простым примером этого может быть то, что Модель не требует определенных полей, как это требуется, но конкретный Вид делает.Вместо того, чтобы вставлять эту логику в пользовательский интерфейс, если она присоединена к ViewModel, другие пользовательские интерфейсы могут использовать ту же виртуальную машину без необходимости дублировать логику, которая была встроена в первый пользовательский интерфейс.

4 голосов
/ 25 марта 2013

MVC и MVVM на самом деле совершенно разные. Похоже, что при обсуждении с ASP MVC было немного недопонимания MVVM. Практика создания «моделей представления» в MVC, которые являются конкретными классами для подачи представлений, в то время как хорошая практика не соответствует духу MVVM, и фактически является просто более чистой версией MVC.

MVVM больше подходит для настольных компьютеров, использующих WPF или аналогичный, или только в браузере, использующем среду JavaScript, такую ​​как knockout.js. Шаблон сильно отличается от MVC и включает в себя «подписку» видов на модель.

2 голосов
/ 18 сентября 2010

Я бы рискнул предположить, что MVVM - это шаблон проектирования Microsoft, а ASP.NET MVC, который недавно появился, является специфической реализацией Microsoft (которая не обязательно соответствует ни MVC, ни MVVM, но похожа).И, как предполагает Рид, MVC существует с 70-х годов.

1 голос
/ 18 сентября 2010

Оба MVC и MVVM являются архитектурными паттернами. MVC уходит своими корнями в Smalltalk. ASP.NET MVC - это реализация Microsoft шаблона MVC с использованием платформы ASP.NET.

Обе модели имеют дело с разделением интересов. MVC больше связан с взаимодействием различных обычно используемых уровней в приложении, таких как Модель (уровень данных), Представление (уровень представления) и Контроллер (уровень бизнес-логики).

Благодаря расширенным возможностям связывания данных в WPF и Silverlight, MVVM стала более подходящей и известной как следующая большая вещь. Мартин Фаулер обобщил эти шаблоны как шаблоны представления в своей книге «Архитектура корпоративных приложений».

Одно из преимуществ использования ViewModel, которое я вижу, заключается в том, что он позволяет лучше тестировать код приложения с помощью модульных тестов. По этой причине я считаю, что MVVM или, по крайней мере, его бит ViewModel довольно часто используется в приложениях ASP.NET MVC.

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