构建ASP.net MVC App以使用存储库和服务

ak3*_*t0n 3 asp.net-mvc service design-patterns controller repository-pattern

我最近开始阅读有关ASP.net MVC的内容,在对这个概念感到兴奋之后,我开始将我的所有webform项目迁移到MVC,但即使遵循了所有好的建议,我也很难保持我的控制器瘦身(或者也许我只是不明白......).我处理的网站有文章,视频,报价......每个实体都有类别,评论,可以与之关联的图像.我使用Linq来sql进行数据库操作,对于每个实体,我有一个Repository,对于每个存储库,我创建一个要在控制器中使用的服务.

所以我有 -

  • ArticleRepository
  • ArticleCategoryRepository
  • ArticleCommentRepository

和相应的服务

  • ArticleService
  • ArticleCategoryService ...

你看到了这张照片.

我的问题是我有一个文章,类别和注释的控制器,因为我认为有ArticleController处理所有这可能是有道理的,但现在我必须传递Controller构造函数所需的所有服务.所以我想知道我做错了什么.我的服务设计不当吗?我应该创建更大的服务来封装更小的服务并在我的控制器中使用它们吗?或者我应该有articleCategory控制器和articleComment控制器?

用户查看的页面由所有这些组成,您要查看的文章,与之关联的评论,应用的女巫类别列表......如何有效地分解控制器以使其"保持" "解决我的头痛?

谢谢!我希望我的问题不会太长,无法阅读......

Kev*_*ang 7

这是遵循单一责任模式的副作用.如果每个类只是为了一个目的而设计的,那么你最终会得到很多类.这是一个很好的事情.不要害怕它.从长远来看,当涉及到交换组件以及调试系统的哪些组件无法正常工作时,它将使您的生活变得更加轻松.

就个人而言,我更喜欢将更多的域逻辑放在实际的域实体中(例如article.AddComment(comment)而不是articleCommentService.AddComment(article,comment)),但你的方法也很好.