我使用 MVC 框架已经有一段时间了,我真的很喜欢如何分离关注点。我养成了让控制器做大量工作的坏习惯。所以我真的在寻求一些建议。
当我第一次开始使用 MVC 时,我经常在数据库工作完成后让控制器对模型进行操作。我知道这很糟糕,所以将这项工作转移到模型中。但是我对此并不满意,因为我希望我的模型非常好学。
我做了一些阅读,我看到人们通过服务层来保持他们的控制器和模型的精简,我喜欢它的外观。
我只是想了解服务层和存储库应该如何协同工作。这是我的假设,请告诉我这是否是一种好的工作方式?
- 如果不需要对数据进行任何操作,控制器可以直接调用存储库,因此服务层不需要参与
- 一旦需要对数据(业务逻辑)进行任何工作,则应在服务层中完成,控制器将在需要时对服务层进行简单调用
- 一旦服务完成了它的业务逻辑,它将根据需要使用存储库(如果需要持久化数据)。
- 理想情况下,模型应该保持精简,理想情况下只是充当 DTO
- 数据验证将在模型内完成(使用 MonoRail 验证属性)。我很欣赏甚至没有人喜欢用很多属性污染他们的模型,但这是一个不同的讨论。我喜欢 MonoRail 的验证属性在 UI 中自动 jQuery 验证的好处。
我试图将我的所有代码都转向单一责任原则,因此试图整理我的编码实践。
谢谢