MVP MVC和MVVM之间的区别

时间:2012-07-09 18:09:42

标签: asp.net wpf winforms silverlight design-patterns

伙计我经历了很多链接/博客。我看到他们中的大多数人不能用外行语言清楚地沟通,以及MVP,MVVM和MVC之间的技术差异。我知道每个角色代表什么,也参与MVP。但是,如果有人问我同样的问题,我真的不明白。为什么我不能在MvP中使用控制器而不是Presenter?为什么在MVVM中使用View Model而不是演示者,以及它有何不同?我可以用一句话来说“MVC针对ASP.NET进行了优化,并且在VS中也有模板,MVP针对winform进行了优化,而MV / SLF则支持MVVM,因为它支持内置绑定功能等”。但我觉得这不是我必须理解的,而是详细而深刻的。有人可以通过详细的解释和用法以及选择一个的实际理由来阐明这一点。谢谢大家...

2 个答案:

答案 0 :(得分:10)

我不能给你一个完整的答案,但是我很难学习其中的一些模式,并且可能能够让你了解一些主要的差异。

我首先学习了MVVM,然后是MVC。我知道MVP以及它在理论上是如何工作的,但是我从来没有真正用它构建一个应用程序。

设计模式之间的最大区别似乎是谁控制应用程序流和逻辑。

MVVM 中,您的代码类(ViewModels)是您的应用程序,而您的Views只是一个非常友好的用户界面,位于应用程序代码之上并允许用户与之交互。这意味着ViewModels有一个巨大的工作,因为他们 你的应用程序,并负责从应用程序流到业务逻辑的所有事情。

使用 MVC ,您的Views是您的应用,而Controller则处理应用流程。应用程序逻辑通常位于ViewModels中,它被视为MVC中M的一部分(旁注:MVC中的M不能与MVVM中的M相同因为MVC的M层包含的功能比MVVM的M层更多。为用户提供一个屏幕(View),他们与之互动,然后向Controller提交内容,Controller决定谁对数据执行了哪些操作并返回新的{{1}用户。

我没有使用 MVP ,但我对它的理解与MVC非常相似,但针对桌面应用程序而非客户端/服务器应用程序进行了优化。 View是实际应用程序,而Views处理应用程序事件和业务逻辑。

答案 1 :(得分:1)

在MVC中,您将模型视图控制器链接为三角形 在MVP中,您有模型视图Presenter链接的线性 基本上MVC和MVP非常相似,但是使用MVC更简单,即使你已经有内置的MS插件来创建和分离你的M-V-C提供它的优点 使用MVP,您的应用程序看起来就像一般的ASP.NET应用程序,意味着:没有Razor,视图没有.cshtml等等,您必须自己处理结构。 MVVM通常用于Silverlight / WPF,对于那些技术人员来说,它是最好的选择。 MVVM和MVC的想法非常相似。 如果使用淘汰赛,您还可以在Web应用程序的客户端应用MVVM。