MVC瘦控制器架构

时间:2013-12-11 01:28:51

标签: asp.net-mvc architecture

最近我一直在想着将ViewModels放在一个单独的项目中并将它们填充到存储库中,然后将它们交给控制器。这可能会成为非常薄的控制器。

这种模式叫什么?

2 个答案:

答案 0 :(得分:2)

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

但是:

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

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

答案 1 :(得分:0)

虽然@ guillauem31的答案很有用,但我认为它有点缺失,有点误导

简而言之,适配器是

Adapter
The ‘Design Patterns’ book contains a description of the generic ‘Adapter’ pattern:
 “Convert the interface of a class into another interace clients expect.”

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

他有用地建议适配器可以在viewmodel的构造函数中。我不确定我喜欢这个,但似乎没问题。

如果可能的话,我真的希望将模型保持为简单的类对象。

所以我同样可以在服务层中填充viewmodels。

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

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