在ASP.NET MVC中使用Command Query Responsibility Segregation而不是Repository模式有什么好处?

时间:2015-08-19 08:43:48

标签: asp.net-mvc-4 repository-pattern cqrs

有人能否让我更好地了解在全局存储库模式中使用命令查询分离的优势?

1 个答案:

答案 0 :(得分:3)

CQS和存储库是完全不同的概念。您可能会想到具有特定查询处理程序实现的CQRS。

无论如何,所有这些都是兼容的。 CQRS意味着一个“命令”模型,即一个非常容易更新的模型。存储库模式用于抽象持久性。 CQS意味着您不在同一个函数中执行命令和查询(请注意,查询不是SQL查询)。基本上,命令会更改某些内容,而查询会读取并返回结果。

使用读取模型,您可以使用特定的查询服务(也称为处理程序)来处理查询用例。在这种情况下,“真正的”存储库并没有多大帮助,因为查询处理程序本身抽象了持久性。但在精神上,查询处理程序基本上是一个存储库方法。

就个人而言,我只使用Command(写/业务)模型来使用存储库。它们做得很少:添加,获取,保存,删除。对于查询需求,我有一个带有查询处理程序的读模型。