我最近开始阅读有关 ASP.net MVC 的内容,在对这个概念感到兴奋之后,我开始将我所有的 webform 项目迁移到 MVC,但即使在遵循了所有好的建议之后,我也很难让我的 Controller 保持瘦身(或者也许我只是不明白......)。 我处理的网站有文章、视频、报价......并且这些实体中的每一个都有可以与之关联的类别、评论、图像。我正在使用 Linq to sql 进行数据库操作,对于每个实体,我都有一个存储库,并且对于每个存储库,我创建一个要在 Controller 中使用的服务。
所以我有 -
- 文章存储库
- ArticleCategoryRepository
- ArticleCommentRepository
以及相应的服务
- 文章服务
- ArticleCategoryService ...
你看到图片了。
我遇到的问题是我有一个用于文章、类别和评论的 Controller ,因为我认为让 ArticleController 处理所有这些可能是有意义的,但现在我必须将所需的所有服务传递给 Controller 构造函数。所以我想知道我做错了什么。我的服务设计不正确吗?我应该创建更大的服务来封装更小的服务并在我的 Controller 中使用它们吗?还是我应该有一个文章类别 Controller 和一个文章评论 Controller ?
用户查看的页面由所有这些组成,您要查看的文章,与之相关的评论,适用于它的类别列表......我如何有效地分解 Controller 以保持它“瘦”了,解决了我的头痛?
谢谢! 我希望我的问题不会太长而无法阅读...
最佳答案
这是遵循单一职责模式的副作用。如果每个类都只为一个目的而设计,那么你最终会得到很多类。这是一件好的事情。不要害怕它。从长远来看,在更换组件以及调试系统的哪些组件不工作时,它会让您的生活变得更加轻松。
就我个人而言,我更喜欢将更多的域逻辑放在实际的域实体中(例如 article.AddComment(comment) 而不是 articleCommentService.AddComment(article, comment)),但你的方法也很好。
关于asp.net-mvc - 构建 ASP.net MVC 应用程序以使用存储库和服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2503442/