Разница между MVP MVC и MVVM
Люди, которые прошли через многие ссылки/блоги. Я вижу, что большинство из них не в состоянии четко общаться на языке непрофессионалов, а также технические различия между MVP, MVVM и MVC. Я знаю, что означает каждый персонаж, а также работал над MVP. Но не понимаю, кто-то задает мне тот же вопрос. Почему я не могу использовать контроллер в MvP вместо Presenter? И почему View Model в MVVM вместо презентатора и как он отличается? Я могу в одном согласии сказать: "MVC оптимизирован для ASP.NET, а также имеет шаблоны в VS, MVP оптимизирован для winforms и MVVM для SL/WPF, поскольку он поддерживает встроенные функции привязки и т.д.". Но я чувствую, что это не то, что я должен понимать, но подробно и глубоко. Может ли кто-то пролить свет на это с подробным объяснением и использованием и фактической причиной выбора. Спасибо всем...
Ответы
Ответ 1
Я не могу дать вам полный ответ, однако я изо всех сил пытался изучить некоторые из этих шаблонов и мог бы дать вам представление о некоторых основных отличиях.
Сначала я узнал MVVM, а затем MVC. Я знаю MVP и как он работает в теории, однако я никогда не строил с ним приложение.
Самая большая разница между шаблонами проектирования, по-видимому, заключается в том, кто контролирует поток приложений и логику.
В MVVM ваши классы кода (ViewModels
) являются вашим приложением, а ваш Views
- это просто удобный интерфейс, который находится поверх кода приложения и позволяет пользователям взаимодействовать с ним. Это означает, что ViewModels
имеет огромную работу, потому что это ваше приложение и отвечает за все: от потока приложений до бизнес-логики.
С MVC ваше приложение Views
- ваше приложение, а ваш Controller
обрабатывает поток приложений. Логика приложения обычно находится в ViewModels
, которые считаются частью M
в MVC (sidenote: M
в MVC не может считаться тем же, что и M
в MVVM, потому что слой MVC M
содержит больше чем уровень MVVM M
). Пользователю предоставляется экран (View
), он взаимодействует с ним, а затем передает что-то в Controller
, а Controller
решает, кто что делает с данными и возвращает пользователю View
.
Я не использовал MVP, но мое понимание этого было очень похоже на MVC, но оптимизировано для настольного приложения, а не для клиент-серверного приложения. Views
- это фактическое приложение, а Presenter
обрабатывает события приложений и бизнес-логику.
Ответ 2
В MVC у вас есть Model View Controller, связанный как треугольник
В MVP у вас есть модель View Presenter, связанная с линеаризацией
В основном MVC и MVP очень похожи, но проще работать с MVC, даже если у вас уже есть встроенный плагин MS для создания и разделения вашего M-V-C, обеспечивающего его преимущества
С MVP ваше приложение будет выглядеть как общее приложение ASP.NET, это означает: no Razor, no.cshtml для просмотров и т.д., И вам придется иметь дело со структурой самостоятельно.
MVVM обычно используется в Silverlight/WPF, и для тех техников это лучший выбор.
Идея MVVM и MVC в значительной степени схожа.
Вы также можете применять MVVM на клиентской стороне своего веб-приложения, если используете нокаут.