MVVM模式的重点是什么?

时间:2011-02-26 14:22:02

标签: asp.net-mvc silverlight model-view-controller mvvm

谈到MVC模式,我一直认为控制器是枢轴。也就是说,它是接收用户希望执行的所有动作的那个,然后决定使用哪个模型和视图来完成用户请求的动作。 (我对MVC的体验是通过Asp.net进行的,因此我在考虑如何使用路径来选择正确的控制器,然后加载模型并选择并创建适当的视图。)

MVVM模式中是否有一个支点?视图是否是用户与枢轴交互的枢轴,然后可能导致使用适当的VM加载并呈现给用户的不同模型?

此外,通常位于MVC控制器中的逻辑位于MVVM模式中的哪个位置?

4 个答案:

答案 0 :(得分:4)

MVVM比MVC更分散。视图和视图模型通常在设计时绑定,这意味着VM不执行与MVC控制器相同的功能。它更像是一个纯粹的协调者而不是一个控制器 - 一个好的视图模型通常具有相对较少的决策逻辑。

MVVM背后的整个想法是将视图的图形元素与其程序元素隔离开来。它与MVC的相似之处实际上只是肤浅的。在MVC中,控制器充当执行者,是应用程序背后的真正智能。在MVVM中,VM仅作为视图的编程抽象,并且智能分布在整个应用程序中。

MVVM组件以协作,分布式方式运行,这往往会消除一些MVC应用程序中的整体集中。需要一点时间来适应,但效果很好。将MVVM应用程序视为机械瑞士手表 - 手表的支点是什么?真的没有一个。手表是一组自主组件,它们协同工作以执行任务。确实没有一个“支点”而不是策划操作。

答案 1 :(得分:2)

我认为MVVM中没有等效的支点。但是我想视图可以选择它的VM。出于测试目的,您可以在没有视图的情况下使用VM。控制逻辑位于ViewModel中。

我喜欢将MVVM视为M< - > VM< - > V

VM的一个很好的描述来自Fowler,他称之为Presentation Model

答案 2 :(得分:0)

我认为在MVVM中它将是视图。视图响应用户操作,然后决定如何响应。它将根据用户操作在VM或其他方法上调用一个方法。然后,VM执行操作。

我认为你可以进一步将MVVM分为两种版本;一个有丰富的模型,一个有贫血的模型。关于Csla框架的This link讨论了“丰富”模型提供的与贫血的关系。

答案 3 :(得分:0)

在MVVM中,您的视图只显示您的数据。就像MVC中的视图一样。这样你的模型就可以完成所有工作。

如果你在asp.net页面上放一个按钮,按下它,就像在Silverlight页面上放一个按钮一样。使用MVVM时该视图的模型将处理它自己需要做的所有操作来操作数据。视图将相应地响应(通过绑定)。在MVC中,控制器将决定在模型上采取什么行动。

所以M& MVC“视图模型”中的C被合并为MV“视图模型”中的一个M.