关于asp.net mvc:MVC和MVVM有什么区别和相似之处?

What are the differences and similarities between MVC and MVVM?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What is the difference between MVC and MVVM?

我是ASP.NET MVC模式的新手。我只有几个关于MVC和MVVM的问题

  • 这些模式解决了什么问题?
  • 它们有什么相似之处?
  • 它们有什么不同?

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

    在MVVM中,UI(视图)面向用户并直接接受用户输入。在视图中,此活动将触发视图模型(视图的DataContext)中的命令。控件流到ViewModel,后者解释视图已发送的内容并准备其模型。控件流回视图后,它会根据模型中的更改自行更新。如果需要新的视图,则ViewModel会将其与NavigationService(或应用程序使用的任何导航方法)通信,后者是窗口或框架的权限——UI组件。您可以看到,viewModel并不是第一个和最后一个要执行的操作;该视图在MVC中扮演的角色要比在MVC中扮演的角色大得多。

    至于选择哪一个最好,我倾向于由工具支持来指导。例如,如果您使用的是ASP.NET,那么通过MVC项目模板可以实现大量的自动化,这有助于在应用程序中设置和使用该模式。根据我对Silverlight/WPF的理解,MVVM周围有很多支持。几年前,当我开始加速MVC/MVP时,我在电子商务应用程序的签出过程中实现了MVP。这是一次很好的经历,结果令人满意,但我写的东西都是手写的,没有工具支持和指导。当我编写一个Silverlight应用程序时,我肯定会转向MVVM,因为它提供了支持。


    MVC是一种软件体系结构模式,它允许您进行很大的分离,特别是域逻辑、用户界面、业务逻辑等的分离,并允许完全分离关注点,允许独立的逻辑单独开发和测试,以及轻松测试多个版本的实现,而无需太多的广告。O

    如果您喜欢描述您想要捕获的所有内容(包括其行为)的实体,那么模型就是这样的,尽管大多数人都是从数据库表的角度来考虑它,但它只是一个存储模型,模型将所有内容结合在一起。

    视图是指您是否喜欢与之交互的UI

    控制器是驱动视图之间的交互的一个,它可以进行模型上发生的更改。

    如果您愿意,MVVM与MVC相同,但它使用一个额外的视图模型来帮助用户界面,并且这个视图模型通过控制器与模型同步。

    该体系结构还支持最佳实践,如存储库模式、IOC等。

    一个快速的例如说一个人的模型

    1
    2
    3
    4
    5
    6
    class Person
    {
       int id;
       string type;

    }

    现在,有助于用户界面的视图模型可能有一个DropDownList来弹出人员类型,因此同一模型的视图模型可能是

    1
    2
    3
    4
    5
    6
    Class PersonViewModel

    {  //Pseudo code
       SelectList {mytype, yourtype}

    }

    这可能比在视图中使用的/ PseudoCode下拉列表(slectlist)

    希望这有帮助


    网上有很多关于这个的内容,但是作为一个开始,这个视频会帮助你