MVC和MVVM之间有什么区别和相似之处?

时间:2011-11-16 12:38:29

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

  

可能重复:
  What is the difference between MVC and MVVM?

我是Asp.Net MVC模式的新手。我只有几个与MVC和MVVM相关的问题

  1. 这些模式解决了哪些问题?
  2. 它们有什么相似之处?
  3. 他们有什么不同?

3 个答案:

答案 0 :(得分:9)

ASP.NET MVC中的

请求来自Web服务器,由Controller直接处理。 Controller确定适当的视图并使用模型填充它。然后,Controller将这些实例发布到底层系统,该系统将结果呈现给客户端。您可以看到Controller是第一个也是最后一个。

在MVVM中,UI(视图)面向用户并直接接受用户输入。在View中,ViewModel中的命令(View的DataContext)由此活动触发。控制流向ViewModel,ViewModel解释View发送的内容并准备其模型。控制流回View后,它会根据模型中的更改自行更新。如果需要新的View,ViewModel会将此与NavigationService(或您的应用程序使用的任何导航方法)进行通信,这是Window或Frame-UI组件的范围。您可以看到ViewModel不是第一个也是最后一个行为; View比MVC扮演更重要的角色。

至于选择哪一个最好,我倾向于以工具支持为导向。例如,如果您使用的是ASP.Net,则通过MVC项目模板可以实现大量自动化,这有助于锅炉板设置以及在应用程序中使用该模式。根据我对Silverlight / WPF的理解,围绕MVVM有很多支持。几年前,当我加速MVC / MVP时,我在电子商务应用程序的结账过程中实施了MVP。这是一次令人满意的结果,但是我手工编写了所有内容,没有任何工具支持和很少的指导。当我编写Silverlight应用程序时,由于支持,我肯定会转向MVVM。

答案 1 :(得分:2)

网上有大量内容,但作为首发this视频会帮助您

答案 2 :(得分:2)

MVC是一种软件架构模式,它允许您进行极好的分离,尤其是域逻辑,用户界面,业务逻辑等,并允许完全分离关注点,并允许单独开发独立逻辑并单独测试和轻松测试多个版本的实现没有太多的麻烦。

模型是指您描述要捕获的所有内容的实体,包括其行为,尽管大多数人会根据数据库表来考虑它,但它只是一个存储模型和模型组合了所有内容。

如果你喜欢与之交互的用户界面,那就是

控制器是驱动视图制作或进行模型上发生的更改之间的交互的控制器。

如果您喜欢MVVM与MVC相同,但它使用额外的视图模型来帮助UI,并且此视图模型通过控制器与模型同步。

该架构还包含最佳实践,如存储库模式,IOC等。

快速例如比如一个人模特

class Person
{ 
   int id;
   string type;

}

现在,一个可以帮助UI的View模型可能有一个下拉列表来弹出类型的人,因此同一模型的ViewModel可能

Class PersonViewModel

{  //Pseudo code
   SelectList {mytype, yourtype}

}

这可能在视图中使用 //伪代码 下拉列表(slectList)

希望这有帮助