CQS问题?

12-12-19 clonalman
              

一个极端的例子,添加一个对象到数据库并返回其ID,CQS如何分离?

object id = db.add(Object entity)

              

banq
2012-12-19 14:10

添加是写,返回只是写的结果,这个简单一个函数就可以实现,CQRS是复杂系统,有一堆写,有一堆读才需要。

clonalman
2012-12-19 16:39

2012-12-19 14:10 "@banq"的内容
添加是写,返回只是写的结果,这个简单一个函数就可以实现,CQRS是复杂系统,有一堆写,有一堆读才需要。 ...

这是极端的情况,

有写也有读, CQS不是说了,任何函数最终都可以分解为读操作与写操作的组合.

上面例子有写操作也有读返回,很明显不满足CQS,如何分解?

[该贴被clonalman于2012-12-19 16:42修改过]

sym1987
2012-12-20 00:25

2012-12-19 16:39 "@clonalman"的内容
有写也有读, CQS不是说了,任何函数最终都可以分解为读操作与写操作的组合.

上面例子有写操作也有读返回,很明显不满足CQS,如何分解? ...

这是90%的写和10%的读。个人觉得,合适才是最好的,不一定非要这般彻底遵循CQS,设计应该更多的是一种平衡,理论与实际情况相结合。

也有人提过Design by contract,但是大多数情况下我们只验证precondition,甚至某些情况权衡其它因素,在一些不重要的地方或基本不可能出错的地方完全不验证输入,这不见得就是错的

brighthas
2012-12-20 08:16

很简单,cqrs中 Command 也是要返回结果的,但这个结果只是提示性结果,和查询性信息还是有区别的。

这个不矛盾。

2Go 1 2 下一页