我目前正在尝试重构一个C# MVC应用程序,尽管我对该模式的经验有限。在研究这个主题时,我似乎不断地陷入到关于最佳实践的两极相反的观点中。
我的最大问题是控制器中有太多的内容。它们可以工作,但它们充满了难以重构和测试的业务逻辑。模型大多只是薄薄的DTO。那么,我应该从哪里开始放置这些有用的业务逻辑,以便重新组织和测试呢?
很多人说应该将其放在模型中。但是你会听到一些人说它最终应该放在控制器中。还有其他人告诉你,模型仅包含数据而不包含任何其他内容的原则是该模式的基本原则。
然后你会听到有人告诉你应该把它放在第四种类别中,即ViewModel。现在我已经在WPF中使用MVVM并熟悉这种范例。但是将其添加到MVC中似乎只是为了盲目遵循一种模式规定而复制了很多其他地方已经完成的工作。另一个选择是将其放入某种辅助类中。这似乎是一个常见的建议,我不会提供链接。但这样做似乎是对另一个类的浪费,该类除了为单个控制器提供函数之外没有存在的意义。这似乎是面向对象编程原则的根本违反。
这个问题是否有明确的“正确”答案?如果有,为什么会有这么多混淆?如果没有,如何在这些观点的泥沼中评估最佳解决方案?