viewModel是否属于Web层或服务层?

时间:2013-02-17 21:03:42

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

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

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

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

之前:

  1. Controller要求服务数据
  2. Controller接受数据并构造viewModel
  3. Controller将viewModel发送到客户端
  4. 客户端将数据发送回Controller
  5. Controller从viewModel获取数据并将其发送回Service以更新db
    1. Controller要求服务数据
    2. Service构造一个viewModel并用数据填充它
    3. Controller接受viewModel
    4. Controller将viewModel发送到客户端
    5. 客户端将数据发送回Controller
    6. Controller将viewModel转发给服务
    7. 服务将数据分开并根据需要执行更新/查询
    8. 一个比另一个好吗?为什么呢?

1 个答案:

答案 0 :(得分:3)

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

它可能包含服务检索的数据,但也可能使用该特定视图所需的其他数据进行扩充。

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

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