【问题标题】:MVC thin controller architectureMVC 瘦控制器架构
【发布时间】:2013-12-28 19:38:02
【问题描述】:

最近我一直在考虑将 ViewModel 放在一个单独的项目中并将它们填充到存储库中,然后将它们交给控制器。这可以制造出非常薄的控制器。

这种模式叫什么?

【问题讨论】:

  • 这是我们在工作中使用的方法。我们也称它为“瘦控制器”

标签: asp.net-mvc architecture


【解决方案1】:

Hexagonal Architecture 有这个适配器的概念,在这种情况下,您正在从业务对象适应表示对象。

但是:

  • 如果您指的是持久层存储库中的存储库,那么填充特定于表示的数据结构通常不是它们的责任。持久层不应该知道 UI。

  • “瘦控制器”并不意味着您必须将 ViewModel 或 ViewModel 填充逻辑放在单独的项目中。此外,仅仅因为控制器不应该包含这个逻辑并不意味着它不能调用它。您的控制器可以从同一个 MVC 项目中调用 Adapter 对象,将其接收到的任何内容转换为 ViewModel,或者您可以在 ViewModel 的构造函数中进行转换。

【讨论】:

    【解决方案2】:

    虽然@guillauem31 的回答很有用,但我认为它遗漏了一点,而且有点误导

    简而言之,适配器就是

    适配器 “设计模式”一书包含对通用“适配器”模式的描述: “将一个类的接口转换为客户期望的另一个接口。”

    在我看来,我想在控制器和存储库之间放置一个适配器。

    他有用地建议适配器可以在视图模型的构造函数中。我不确定我是否喜欢这个,但似乎还可以。

    如果可能的话,我真的很想将我的模型保留为简单的类对象。

    所以我同样可以在服务层中填充视图模型。

    我想这就是这个问题的来源...... Fat model / thin controller vs. Service layer

    这是一种使用各种适配器填充视图模型的方法 http://paulstovell.com/blog/clean-aspnet-mvc-controllers

    【讨论】:

      猜你喜欢
      • 2015-06-25
      • 2011-01-28
      • 2013-01-20
      • 2023-03-21
      • 2017-11-07
      • 1970-01-01
      • 2013-05-14
      • 1970-01-01
      • 2010-10-02
      相关资源
      最近更新 更多