一方与另一方的责任是什么? 一个与另一个应该采用什么样的逻辑? 哪一个打服务和数据库? 如何确定我的代码是应该放在viewmodel还是控制器中?
为了记录,我使用的是ASP MVC,但由于问题是架构,我不相信我使用的是哪种语言或框架。我邀请所有MVC回复
答案 0 :(得分:23)
ViewModel是一个模式,用于处理View的表示逻辑和状态,控制器是任何MVC框架的基本部分之一,它响应任何http请求并编排所有后续操作,直到http响应。
ViewModel模式:More info
在ViewModel模式中,UI和 任何UI逻辑都封装在一个 视图。 View观察ViewModel 它封装了表示逻辑 和州。 ViewModel依次 与模型交互并充当 它和它之间的中间人 图。
View <-> ViewModel <-> Model
控制器(来自前端控制器模式):More Info
它“提供了一个集中的切入点 处理请求。“
HTTP Request -> Controller -> (Model,View)
- 平原差异: -
答案 1 :(得分:8)
答案 2 :(得分:2)
模型 - 视图 - 控制器(MVC)是一种架构设计模式,主要用于将业务逻辑与表示分离。基本上,你不希望你的后端接触你的前面。它通常看起来像这样:
这样做的原因是,通过分离后端和前端,您不会将用户界面直接绑定到数据/工作。这允许您在不影响所述逻辑的情况下将新接口放到业务逻辑上。此外,它还提高了测试的便利性。
MVC派上用场的简单示例 - 假设您有一个管理公司财务的应用程序。现在,如果您正确使用MVC,您可以拥有位于某个金融家桌面的前端,让他处理交易,管理财务等。但是,因为业务逻辑是独立的,您还可以提供前端到你的首席执行官的Blackberry,让他看到业务的现状。由于两个前端不同,它们可以做不同的事情,同时仍然提供(不同类型)数据访问。
修改强>
由于您稍微更新了一下问题,我会更新我的答案。 MVC的分离没有完美的科学。但是,有一些好的经验法则。例如,如果您正在谈论GUI组件,那可能就是一个视图。 (你在谈论外观和感觉,可用性等)如果你在谈论数据和房子的“业务”方面(数据库,逻辑等),你可能指的是一个模型。并且,任何控制两者之间相互作用的东西很可能都是控制者。
此外,应该注意的是,虽然视图和模型通常是“物理”分离的,但控制器可以在有意义的情况下与视图一起存在。
当你说MVC的框架(甚至语言)无关紧要时,你是对的。模式本身与语言无关,并且真正描述了构建系统的方法。
希望有所帮助!
答案 3 :(得分:1)
应该调用一些逻辑和模型来生成一些数据(结构化或半结构化)。从这个数据返回的页面/ JSON /等。是创建的,通常只有基本的概述逻辑。
第一部分(创建数据)由控制器完成(通常通过模型)。第二部分 - 由视图。 ViewModel是在控制器和视图之间传递的数据结构,通常只包含访问器。
答案 4 :(得分:1)
我认为学习接受的学说有一定的价值。但是理解教义如何成为现实也是有价值的。
Trygve Reenskaug因发明MVC而广受赞誉。 N. Alex Rupp的文章Beyond MVC: A new look at the servelet architecture包括MVC的历史。在Reenskaug 1978年在施乐帕洛阿尔托研究中心工作的一节中,有一篇链接到他的论文Thing-Model-View-Editor: an Example from a planningsystem。这些作品就是这样描述的。
<强>事强>
用户感兴趣的东西。它可以是具体的,如房子或综合的 电路。它可能是抽象的,就像一个新想法或关于论文的意见。它可能是一个整体, 像计算机或部件,如电路元件。
<强>模型强>
模型是计算中数据形式的抽象的主动表示 系统
查看强>
对于任何给定的模型,都附加了一个或多个视图,每个视图都能够 在屏幕和硬拷贝上显示模型的一个或多个图形表示。一个 View也能够在合理关联的Model上执行此类操作 有了那个观点。
<强>编辑强>
编辑器是用户与一个或多个视图之间的接口。它为用户提供合适的命令系统,例如以可动态改变的菜单的形式 根据目前的情况。它为视图提供必要的协调和 命令消息。
Rupp将Reenskaug的编辑识别为控制器或工具。
MVC Triads出现在SmallTalk-80中。该模型是现实世界概念的抽象,视图是其视觉表示,控制器是允许用户与其交互的按钮和滑动条(从而“控制”视图)。三合一中的所有部分都是相互关联的,并且可以与其他两个部分进行通信,因此不涉及分层或抽象。从那时起,Reenskaug“倾向于使用术语而不是控制器”。根据他的笔记,这些是他在以后的实施中使用的术语
答案 5 :(得分:0)
模型代表您的数据及其操作方式。因此,模型触及数据库。
查看是您的用户界面。
Controler是他们之间的粘合剂。
答案 6 :(得分:-3)
MVC代表模型,视图,控制器。
模型=数据(数据库表)
View = HTML,CSS,JavaScript等
控制器=主逻辑,模型与模型之间的契约图。
以简单易懂的方式,
MVC允许您以业务数据和表示数据分离的方式开发应用程序。有了这个,开发人员和设计人员可以在MVC应用程序上独立工作而不会发生冲突。 MVC也使你的应用程序也可以使用OOP。