【问题标题】:should i expose repository to controller when using service?使用服务时我应该向控制器公开存储库吗?
【发布时间】:2014-02-24 06:20:25
【问题描述】:

我目前使用工作单元、通用存储库和服务模式开发 asp mvc。我对设计应该如何在控制器中工作感到有些困惑。 我应该将存储库暴露给控制器吗?还是控制器应该只知道服务? 控制器需要存储库来检索组合框列表的实体。 暴露存储库的问题在于它具有保存和删除方法,并且只能由服务调用。 有人可以帮我解决这个问题吗?

【问题讨论】:

标签: asp.net-mvc design-patterns repository-pattern


【解决方案1】:

存储库模式用于抽象出数据源。

没有必要抽象掉抽象。所以我会使用存储库。

但是,一旦您开始在表示层中获取业务逻辑,您就应该将其提取出来并将其放入服务中。

【讨论】:

  • @Reynaldi:你对答案满意吗?
  • @Reynaldi:你能接受答案,还是需要更多信息?
【解决方案2】:

这取决于持久层(Repository)前面的任何业务逻辑的需求。一旦你有任何东西,它就会在控制器中结束。这对于一个非常简单的系统可能是可以接受的,但是当您将系统扩展(REST API、管理/支持应用程序、离线/批处理)超出玩具状态时,您确实希望将该逻辑推送到共享层,服务层。现在就放入抽象层,稍后再进行一些重构。这也使控制器保持在他们本来应该从事的业务中,引导流量并调用服务来获取/放置数据。

【讨论】:

  • 表示层应该只引用服务层而不是存储库层。与您的情况一样,有时我们需要通过服务层创建“传递”,只是为了将其公开给表示层。
猜你喜欢
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-30
相关资源
最近更新 更多