ViewModel和Controller之间有什么区别?

Med*_*Man 25 model-view-controller asp.net-mvc ruby-on-rails

一个与另一个的责任是什么?一个与另一个应该采用什么样的逻辑?哪一个打服务和数据库?如何确定我的代码是应该放在viewmodel还是控制器中?

为了记录,我使用ASP MVC,但由于问题是架构,我不相信我使用的语言或框架.我邀请所有MVC回应

JOB*_*OBG 23

ViewModel是一个模式,用于处理View的表示逻辑和状态,控制器是任何MVC框架的基本部分之一,它响应任何http请求并编排所有后续操作,直到http响应.

ViewModel模式:更多信息

在ViewModel模式中,UI和任何UI逻辑都封装在View中.View观察一个封装表示逻辑和状态的ViewModel.ViewModel又与Model交互,并充当它与View之间的中介.

View <-> ViewModel <-> Model
Run Code Online (Sandbox Code Playgroud)

控制器(来自前端控制器模式):更多信息

它"为处理请求提供了一个集中的入口点."

HTTP Request -> Controller -> (Model,View)
Run Code Online (Sandbox Code Playgroud)

- 平原差异: -

  • 虽然ViewModel是一个可选模式,但如果你采用MVC方式,那么Controller是必须的.
  • ViewModel封装了表示逻辑和状态,Controller编排了所有应用程序流.


Kri*_*hna 8

在此输入图像描述

  • ViewModel可以位于客户端,也可以位于服务器端.无论它在哪里,viewmodel的唯一目的是播放演示数据.
  • 在MVC体系结构中,Viewmodel不是强制性的,但是在没有控制器的情况下,无法处理来自客户端的请求.
  • 控制器可以被视为客户端和服务器之间的主要接口,以从服务器获得任何响应.它处理客户端请求,从存储库中提取数据,然后准备视图数据.Viewmodel可以被视为视图数据处理器/演示者,因此是一个更有说服力地管理视图的界面.
  • 在Web应用程序的整体上下文中,我们可以说控制器是应用程序请求处理程序,而viewmodel只是UI处理程序.

  • @OgierSchelvis,不,它们是不同的,你也可以有 MVVMC (它们两者的混合)。 (2认同)