C# 跟踪查询数量时维护CQS
在我的web应用程序中,我跟踪页面的浏览次数 现在,控制器中的操作向数据层发出命令,在返回查询结果之前增加模型上的视图计数 此操作似乎打破了命令-查询分离的规则,因为用户代理通过请求提交查询并无意中发出命令(以增加视图计数)C# 跟踪查询数量时维护CQS,c#,asp.net-mvc,architecture,command-query-separation,C#,Asp.net Mvc,Architecture,Command Query Separation,在我的web应用程序中,我跟踪页面的浏览次数 现在,控制器中的操作向数据层发出命令,在返回查询结果之前增加模型上的视图计数 此操作似乎打破了命令-查询分离的规则,因为用户代理通过请求提交查询并无意中发出命令(以增加视图计数) 在这个动作中,需要用什么架构决策来维护命令查询分离? ,您应该考虑CQS相对于所涉及操作的概念级别。以下是一些似乎都违反CQS的示例,但仅在不同的概念层面上这样做: 对文件系统对象的ReadFile调用不会修改文件,但它可以更新文件上上次访问的时间戳 对存储库的FindB
在这个动作中,需要用什么架构决策来维护命令查询分离?
,您应该考虑CQS相对于所涉及操作的概念级别。以下是一些似乎都违反CQS的示例,但仅在不同的概念层面上这样做:- 对文件系统对象的
调用不会修改文件,但它可以更新文件上上次访问的时间戳ReadFile
- 对存储库的
调用不应更改数据库,但它可以很好地将查询的对象添加到缓存中FindById
- RESTAPI上的GET操作不应更改模型,但它可以更新统计数据
模型的状态,但它们确实修改了该模型之外的数据这并不违反CQS。
另一种方法是通过。上述REST API的客户端不希望模型随GET请求而更改,但他不在乎API是否更新了统计计数器。我严重怀疑是否应将增加视图计数视为一个命令。并且每个web请求都可能导致数据写入日志文件