在MVC控制器中具有模型映射和更多逻辑是否很好?

时间:2018-09-20 10:33:19

标签: c# .net architecture

我正在做一个.NET解决方案,我必须对此进行架构设计。所以我的架构如下所示。

  1. DLL(数据逻辑层)(在这里我所有的存储库都可以访问数据)
  2. 模型(在模式方面)
  3. ViewModels(单独作为类库)
  4. 服务层(在其中处理数据并将其发送到控制器)

这里DLL将通过访问DB发送数据。然后,服务层将使用这些存储库(例如UserRepository等)并按我想要发送给控制器的方式处理数据。在这种情况下,控制器会将ViewModels返回到视图。 所以我想知道的是,当将数据映射到ViewModels时,我的服务层应该进行映射并将ViewModels返回到Controller吗? 要么 服务层作为模型返回,在控制器中我们进行映射并创建视图模型?

我感觉在控制器中进行如此多的操作并不好。所以我的服务应该返回ViewModels,所以控制器的工作量减少了。

我想听听最佳做法和想法

2 个答案:

答案 0 :(得分:1)

我会在控制器中进行映射。因为可能存在某些实例,所以我们需要将相同的服务输出映射到不同的视图模型。否则,我们必须为每种视图模型类型编写多种服务方法。 您可以使用AutoMapper简化映射。

答案 1 :(得分:0)

看看Where should I put automapper code?问题。

建议在服务层中使用Automapper。

此外,配置映射是一种静态方法,仅调用一次,因此不会对性能造成太大影响:official getting started

最后,这是设置的更多说明:SO answer