标准的“模型视图控制器”模式和微软的模型/视图/视图模型模式之间有区别吗?
当前回答
从实用的角度来看,MVC(模型-视图-控制器)是一种模式。然而,当MVC作为ASP.net MVC使用时,当与实体框架(EF)和“强大的工具”相结合时,它是一种非常强大的、部分自动化的方法,用于将数据库、表和列引入web页面,用于完整的CRUD操作或仅用于R(检索或读取)操作。至少在我使用MVVM时,视图模型与依赖于业务对象的模型交互,这些业务对象是“手工制作”的,经过大量的努力,能够获得与EF提供的“开箱即用”一样好的模型是很幸运的。从实用编程的角度来看,MVC似乎是一个不错的选择,因为它提供了许多开箱即用的实用程序,但仍然有可能添加一些花哨的功能。
其他回答
简而言之,在MVC控制器中,ViewModel知道(控件)视图,而在MVVM中,ViewModel不知道谁使用它。ViewModel将其可观察属性和操作公开给任何可能对使用它感兴趣的人。这一事实使得测试更容易,因为在ViewModel中没有对UI的引用。
我认为主要的区别之一是,在MVC中,你的V直接读取你的M,并通过C来操作数据,而在MVVM中,你的VM充当M代理,以及为你的V提供可用的功能。
如果我不是满口废话,我很惊讶没有人创建一个混合的,其中您的VM只是一个M代理,C提供所有功能。
据我所知,MVVM映射到MVC的MV——也就是说,在传统的MVC模式V不沟通直接与M .第二版本的MVC,之间有一个直接联系M和诉MVVM似乎把所有任务相关的M和V交流,和夫妻分离它的c .实际上,还有大范围应用程序工作流程(或实现的使用场景)中没有完全占MVVM。这就是控制器的作用。通过从控制器中删除这些较低级别的方面,它们更干净,更容易修改应用程序的使用场景和业务逻辑,也使控制器更具可重用性。
在MVVM中,控制器不会被ViewModel取代,因为ViewModel的功能与控制器完全不同。你仍然需要一个控制器,因为如果没有控制器,你的模型、视图模型和视图就做不了什么…在MVVM中你也有一个控制器,MVVM这个名字是错误的。
在我看来,MVVMC是正确的名字。
正如你所看到的,ViewModel只是MVC模式的一个附加。它将转换逻辑(例如将对象转换为字符串)从控制器移动到ViewModel。
mvmc,或者MVC+,对于企业和快速应用程序开发来说似乎是一种可行的方法。虽然将UI与业务和交互逻辑分开很好,但“纯”MVVM模式和大多数可用示例在单一视图上工作得最好。
对您的设计不太确定,但我的大多数应用程序都包含页面和几个(可重用的)视图,因此ViewModels确实需要在某种程度上进行交互。使用页面作为控制器将完全违背MVVM的目的,因此不为底层逻辑使用“VM-C”方法可能会导致..嗯. .随着应用程序的成熟,具有挑战性的构造。即使在VB-6中,我们中的大多数人也可能停止了对Button事件进行业务逻辑编码,并开始将命令“中继”到控制器,对吗?我最近研究了许多关于这个主题的新兴框架;我最喜欢的显然是Magellan(在codeplex)方法。编码快乐!
http://en.wikipedia.org/wiki/Model_View_ViewModel#References
推荐文章
- [Vue警告]:找不到元素
- 模板方法和策略模式之间的区别是什么?
- MVC中的业务逻辑
- 将WPF组合框绑定到自定义列表
- 如何在Kotlin中实现生成器模式?
- 工厂模式和策略模式之间的区别是什么?
- 如何向一个5岁的孩子解释依赖注入?
- 我怎么知道什么时候创建一个接口?
- 在PHP5中创建单例设计模式
- 什么时候我们应该使用观察者和可观察对象?
- 在哪里放置AutoMapper.CreateMaps?
- 使用Enum实现单例(Java)
- 由Jon Skeet撰写的《Singleton》澄清
- 为什么c#不提供c++风格的'friend'关键字?
- Java / Jakarta EE web开发,我从哪里开始,我需要什么技能?