【问题标题】:Do viewModels belong in the Web Layer or Service Layer?viewModel 属于 Web 层还是服务层?
【发布时间】:2013-02-17 21:03:42
【问题描述】:

我的应用程序目前遵循服务模式,其中模型是瘦的和 mvc-blind 的,并且控制器调用从模型中检索数据的服务。

现在,我的控制器根据从服务或客户端获取的数据构建和使用 ViewModel。

我想知道的是 - 将 ViewModel 类重新定位到服务层是否明智?

之前:

  1. 控制器向服务请求数据
  2. Controller 接受数据并构造 viewModel
  3. 控制器将 viewModel 发送到客户端
  4. 客户端将数据发送回控制器
  5. Controller 从 viewModel 获取数据并将其发送回 Service 以更新 db

之后

  1. 控制器向服务请求数据
  2. Service 构造一个 viewModel 并用数据填充它
  3. 控制器接受 viewModel
  4. 控制器将 viewModel 发送到客户端
  5. 客户端将数据发送回控制器
  6. 控制器将 viewModel 转发给服务
  7. 服务将数据分开并根据需要执行更新/查询

一个比另一个更好吗?为什么?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 asp.net-mvc-4


    【解决方案1】:

    之前是更好的方法。顾名思义,您的视图模型应该是您的视图的模型。

    它可能包含由服务检索到的数据,但也可能会增加该特定视图所需的其他数据。

    此外,视图模型可能是特定于 UI 技术的,而服务应该完全与 UI 无关。服务代码很可能可以跨 UI 技术重用,但视图模型代码可能不是。

    事实上,在胖客户端应用程序中,您的视图模型可能不仅仅是数据传输对象,还包含表示逻辑以及管理用户状态等。您的服务代码很可能不会绑定到具体的客户端实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-30
      • 2012-05-23
      • 2011-08-04
      • 2016-06-17
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多