最近我一直在想着将ViewModels放在一个单独的项目中并将它们填充到存储库中,然后将它们交给控制器。这可能会成为非常薄的控制器。
这种模式叫什么?
答案 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