asp.net-mvc - 构建 ASP.net MVC 应用程序以使用存储库和服务

标签 asp.net-mvc design-patterns service controller repository-pattern

我最近开始阅读有关 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/

相关文章:

html - 中心导航栏 (ASP.NET MVC)

c# - Multi-Tenancy 应用程序允许一个用户访问多个租户帐户?

oop - 适配器 - 适配器模式的任何真实示例

android - Android 中后台服务的位置跟踪问题

javascript - 使用 JsonResult 和 JavaScript 解析 JSON

c# - GetExternalLoginInfoAsync null with OWIN in ExternalLoginCallback 除非已经登录谷歌

java - 在 Java 中用原语规避代码膨胀的模式

c# - 我的代码中哪个代码行为更好?如何更改我的代码?

Grails 集成测试不能在空服务对象上调用方法?

grails - 如何从grails Controller 触发gradle构建?