我应该在使用服务时将存储库暴露给控制器?

时间:2014-02-24 06:20:25

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

这取决于持久层(Repository)前面的任何业务逻辑的要求。你有的那一刻,它将最终进入控制器。这对于一个非常简单的系统来说可能是可以接受的,但是当您将系统扩展到玩具状态之外(REST API,管理员/支持应用程序,离线/批处理)时,您将希望将该逻辑推送到共享层,实际上,服务层。现在就把它放在抽象中,稍后再保存一些重构。这也使控制器保持其所处的业务,引导流量和调用服务来获取/放置数据。