0

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

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

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

前:

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

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

这个比那个好吗?为什么?

4

1 回答 1

3

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

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

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

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

于 2013-02-17T21:15:06.977 回答