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)
希望这有帮助
网上有很多关于这个的内容,但是作为一个开始,这个视频会帮助你