【问题标题】:Is it Okay to consume repositories and services from a same controller?可以使用来自同一个控制器的存储库和服务吗?
【发布时间】:2010-12-28 13:34:34
【问题描述】:

我使用存储库来执行基本的 CRUD 操作,并使用服务通过这些存储库实现业务逻辑。

我倾向于在控制器中同时使用存储库和服务。我的问题是——就标准架构而言,这可以吗?我应该将我的基本存储库移动到基本服务,以便我的控制器只使用服务,而不是存储库吗?希望这有意义,谢谢。

【问题讨论】:

标签: asp.net-mvc


【解决方案1】:

我建议您将存储库放在服务后面,这样控制器只会使用服务。这样你:

  • 保持良好的分层架构(洋葱架构模式);
  • 保持您的控制器操作简洁明了。

实际上,没有什么能阻止你将 Repos 和 Services 一起注入到你的 Controller 中,但它只是感觉不对 - 那么存在 Services 的意义何在?

【讨论】:

  • 小型项目不需要服务。如果您不打算使用服务,我建议您将存储库注入您的控制器,但模式不是 MVCS,而是 MVC。
  • @George,当然,这取决于项目规模,但实际上我们没有这么简单的项目,根本不需要任何服务。它可能始终与您如何构建域有关。我们避免了一个贫乏的领域,我们的实体包含逻辑,但只是与领域直接相关。每个“类似服务”的逻辑都在应用服务中。
【解决方案2】:

只要你不在控制器里放任何商业逻辑就可以了。如果不添加任何逻辑/行为,那么创建一个包装存储库的新服务类是没有意义的。

我倾向于使用存储库和 内同时服务 控制器。

考虑一下控制器/动作的功能和它的依赖关系,如果您使用存储库和服务,那么您可能应该创建一个新的服务类来包装该功能,并使控制器/动作依赖于该单一服务。理想情况下,操作应仅依赖于一项服务。

当我只需要 CRUD(例如管理应用程序)时,我已经让控制器直接调用存储库。

【讨论】:

    猜你喜欢
    • 2015-11-16
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 2011-11-07
    • 1970-01-01
    相关资源
    最近更新 更多