- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在我的网络应用程序中,我正在跟踪页面的查看次数。
现在, Controller 中的操作向数据层发出命令以在返回查询结果之前增加模型上的 View 计数。
此操作似乎违反了命令-查询-分离的规则,因为随着请求,用户代理正在提交查询并无意中发出命令(以增加查看计数)
需要采取哪些架构决策来维持此操作中的命令-查询-分离?
最佳答案
您应该考虑与相关操作的概念级别相关的 CQS。以下是一些似乎都违反了 CQS 的示例,但只是在不同的概念层面上:
ReadFile
调用不会修改文件 - 但它可以更新文件上最后访问的时间戳。FindById
调用不应更改数据库 - 但它可以很好地将查询的对象添加到缓存中。这些示例有一个共同点:它们维护客户端工作的 model
的状态,但它们会修改该模型之外的数据。 这并不违反 CQS。
另一种查看方式是通过 principle of least surprise .上述 REST API 的客户端不希望模型随着 GET 请求而改变,但他不关心 API 是否更新统计计数器。
关于c# - 在跟踪查询数量时维护 CQS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33486031/
这个问题听起来我可能很蠢,但我真的很困惑。创建 command、query、commandhanlder、queryhandler 和 repositories 并使用依赖注入(inject)来解析基
在我的网络应用程序中,我正在跟踪页面的查看次数。 现在, Controller 中的操作向数据层发出命令以在返回查询结果之前增加模型上的 View 计数。 此操作似乎违反了命令-查询-分离的规则,因为
我正在考虑为我的 ASP.NET MVC 网站应用 CQS,但这是一件非常简单的事情。我不是指 CQRS,因为我想对查询和命令部分使用相同的数据源,因此我不需要事件溯源和其他更复杂的模式。 所以,我的
CQS 原则 (https://en.wikipedia.org/wiki/Command%E2%80%93query_separation) 规定命令应返回 void。 对于异步方法的建议是永远不要
我一直在读到异常应该只用于“异常”的东西,而不是用来控制程序的流程。然而,对于 CQS 实现,这似乎是不可能的,除非我开始修改实现来处理它。我想展示我是如何实现这个的,看看这是否真的很糟糕。我正在使用
维基百科对 command query separation 的定义, 据称 More formally, methods should return a value only if they are
在 DDD 上观看了 Greg Yound 的这个视频 http://www.infoq.com/interviews/greg-young-ddd 我想知道当内存发生变化时,如何使用 DDD 实现命
CQS 架构模式背后的原则是将查询和命令分成不同的路径。理想情况下,您的持久性存储可以读/写分区,但在我的情况下,有一个单一的规范化数据库。 如果您使用的是 ORM(在我的例子中是 NHibernat
我正在学习什么是CQRS模式,并了解到还有CQS模式。 当我尝试搜索时,我发现了很多关于CQRS的图表和信息,但没有找到太多关于CQS的信息。 CQRS 模式中的关键点 在 CQRS 中,有一种要写入
我是一名优秀的程序员,十分优秀!